@capybara-hq/kernel 0.0.0-stage → 0.1.0-rc.1

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 (637) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +20 -2
  4. package/bootstrap.json +26 -0
  5. package/dist/admin/admin.controller.d.ts +139 -0
  6. package/dist/admin/admin.controller.js +238 -0
  7. package/dist/admin/extensions.controller.d.ts +100 -0
  8. package/dist/admin/extensions.controller.js +226 -0
  9. package/dist/admin/setup.controller.d.ts +36 -0
  10. package/dist/admin/setup.controller.js +106 -0
  11. package/dist/admin/setup.service.d.ts +47 -0
  12. package/dist/admin/setup.service.js +90 -0
  13. package/dist/agents/agents.controller.d.ts +205 -0
  14. package/dist/agents/agents.controller.js +144 -0
  15. package/dist/agents/agents.service.d.ts +177 -0
  16. package/dist/agents/agents.service.js +677 -0
  17. package/dist/agents/definition.d.ts +198 -0
  18. package/dist/agents/definition.js +152 -0
  19. package/dist/agents/models.controller.d.ts +13 -0
  20. package/dist/agents/models.controller.js +31 -0
  21. package/dist/agents/templates.controller.d.ts +15 -0
  22. package/dist/agents/templates.controller.js +37 -0
  23. package/dist/agents/templates.d.ts +83 -0
  24. package/dist/agents/templates.js +173 -0
  25. package/dist/catalog/admin-catalog.controller.d.ts +143 -0
  26. package/dist/catalog/admin-catalog.controller.js +245 -0
  27. package/dist/catalog/catalog.service.d.ts +430 -0
  28. package/dist/catalog/catalog.service.js +882 -0
  29. package/dist/catalog/claude/agents.d.ts +27 -0
  30. package/dist/catalog/claude/agents.js +270 -0
  31. package/dist/catalog/claude/commands.d.ts +50 -0
  32. package/dist/catalog/claude/commands.js +179 -0
  33. package/dist/catalog/claude/manifest.d.ts +69 -0
  34. package/dist/catalog/claude/manifest.js +134 -0
  35. package/dist/catalog/claude/marketplace.d.ts +35 -0
  36. package/dist/catalog/claude/marketplace.js +194 -0
  37. package/dist/catalog/claude/mcp.d.ts +33 -0
  38. package/dist/catalog/claude/mcp.js +226 -0
  39. package/dist/catalog/claude/report.d.ts +86 -0
  40. package/dist/catalog/claude/report.js +121 -0
  41. package/dist/catalog/claude/translate.d.ts +56 -0
  42. package/dist/catalog/claude/translate.js +857 -0
  43. package/dist/catalog/cli.d.ts +46 -0
  44. package/dist/catalog/cli.js +211 -0
  45. package/dist/catalog/git-source.d.ts +127 -0
  46. package/dist/catalog/git-source.js +520 -0
  47. package/dist/catalog/marketplace-fetch.d.ts +99 -0
  48. package/dist/catalog/marketplace-fetch.js +203 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +97 -0
  50. package/dist/catalog/marketplaces.controller.js +197 -0
  51. package/dist/catalog/marketplaces.service.d.ts +340 -0
  52. package/dist/catalog/marketplaces.service.js +1217 -0
  53. package/dist/catalog/org-catalog.controller.d.ts +128 -0
  54. package/dist/catalog/org-catalog.controller.js +277 -0
  55. package/dist/catalog/org-catalog.service.d.ts +246 -0
  56. package/dist/catalog/org-catalog.service.js +625 -0
  57. package/dist/catalog/plugin-import.d.ts +436 -0
  58. package/dist/catalog/plugin-import.js +1069 -0
  59. package/dist/catalog/plugin-install.d.ts +447 -0
  60. package/dist/catalog/plugin-install.js +1333 -0
  61. package/dist/catalog/plugin-package.d.ts +143 -0
  62. package/dist/catalog/plugin-package.js +382 -0
  63. package/dist/catalog/plugin-upgrade.d.ts +222 -0
  64. package/dist/catalog/plugin-upgrade.js +1219 -0
  65. package/dist/catalog/requests.service.d.ts +162 -0
  66. package/dist/catalog/requests.service.js +504 -0
  67. package/dist/catalog/schema-path.d.ts +7 -0
  68. package/dist/catalog/schema-path.js +63 -0
  69. package/dist/catalog/upgrade-targets.d.ts +59 -0
  70. package/dist/catalog/upgrade-targets.js +90 -0
  71. package/dist/catalog/versions.d.ts +31 -0
  72. package/dist/catalog/versions.js +44 -0
  73. package/dist/channels/actions.d.ts +37 -0
  74. package/dist/channels/actions.js +121 -0
  75. package/dist/channels/cards.d.ts +44 -0
  76. package/dist/channels/cards.js +156 -0
  77. package/dist/channels/connections.controller.d.ts +59 -0
  78. package/dist/channels/connections.controller.js +115 -0
  79. package/dist/channels/connections.service.d.ts +187 -0
  80. package/dist/channels/connections.service.js +534 -0
  81. package/dist/channels/features.d.ts +12 -0
  82. package/dist/channels/features.js +22 -0
  83. package/dist/channels/inbound.d.ts +120 -0
  84. package/dist/channels/inbound.js +332 -0
  85. package/dist/channels/outbound.d.ts +140 -0
  86. package/dist/channels/outbound.js +1126 -0
  87. package/dist/channels/phrases.d.ts +100 -0
  88. package/dist/channels/phrases.js +81 -0
  89. package/dist/channels/supervisor.d.ts +182 -0
  90. package/dist/channels/supervisor.js +625 -0
  91. package/dist/channels/threads.d.ts +29 -0
  92. package/dist/channels/threads.js +104 -0
  93. package/dist/channels/webhook-url.d.ts +16 -0
  94. package/dist/channels/webhook-url.js +34 -0
  95. package/dist/channels/webhook.controller.d.ts +19 -0
  96. package/dist/channels/webhook.controller.js +72 -0
  97. package/dist/channels/webhook.d.ts +73 -0
  98. package/dist/channels/webhook.js +274 -0
  99. package/dist/config/docs.d.ts +9 -0
  100. package/dist/config/docs.js +85 -0
  101. package/dist/config/env.d.ts +6 -0
  102. package/dist/config/env.js +73 -0
  103. package/dist/config/fields.d.ts +42 -0
  104. package/dist/config/fields.js +214 -0
  105. package/dist/config/file-source.d.ts +3 -0
  106. package/dist/config/file-source.js +31 -0
  107. package/dist/config/load.d.ts +20 -0
  108. package/dist/config/load.js +98 -0
  109. package/dist/config/nacos-source.d.ts +31 -0
  110. package/dist/config/nacos-source.js +229 -0
  111. package/dist/config/schema.d.ts +237 -0
  112. package/dist/config/schema.js +1192 -0
  113. package/dist/config/sources.d.ts +18 -0
  114. package/dist/config/sources.js +59 -0
  115. package/dist/config/types.d.ts +9 -0
  116. package/dist/config/types.js +7 -0
  117. package/dist/conversations/artifacts.d.ts +52 -0
  118. package/dist/conversations/artifacts.js +137 -0
  119. package/dist/conversations/attachments.controller.d.ts +28 -0
  120. package/dist/conversations/attachments.controller.js +96 -0
  121. package/dist/conversations/attachments.service.d.ts +180 -0
  122. package/dist/conversations/attachments.service.js +578 -0
  123. package/dist/conversations/conversations.controller.d.ts +288 -0
  124. package/dist/conversations/conversations.controller.js +607 -0
  125. package/dist/conversations/conversations.service.d.ts +321 -0
  126. package/dist/conversations/conversations.service.js +754 -0
  127. package/dist/conversations/event-log.d.ts +122 -0
  128. package/dist/conversations/event-log.js +259 -0
  129. package/dist/conversations/events.d.ts +856 -0
  130. package/dist/conversations/events.js +639 -0
  131. package/dist/conversations/files.d.ts +92 -0
  132. package/dist/conversations/files.js +213 -0
  133. package/dist/conversations/outputs-read.d.ts +34 -0
  134. package/dist/conversations/outputs-read.js +37 -0
  135. package/dist/conversations/queue.d.ts +169 -0
  136. package/dist/conversations/queue.js +527 -0
  137. package/dist/conversations/sandbox-status.d.ts +21 -0
  138. package/dist/conversations/sandbox-status.js +24 -0
  139. package/dist/conversations/selection.d.ts +46 -0
  140. package/dist/conversations/selection.js +75 -0
  141. package/dist/conversations/titles.d.ts +93 -0
  142. package/dist/conversations/titles.js +423 -0
  143. package/dist/ctx/bus.d.ts +16 -0
  144. package/dist/ctx/bus.js +101 -0
  145. package/dist/ctx/create-ctx.d.ts +109 -0
  146. package/dist/ctx/create-ctx.js +592 -0
  147. package/dist/ctx/kv.d.ts +4 -0
  148. package/dist/ctx/kv.js +31 -0
  149. package/dist/ctx/lock.d.ts +4 -0
  150. package/dist/ctx/lock.js +39 -0
  151. package/dist/ctx/namespace.d.ts +6 -0
  152. package/dist/ctx/namespace.js +12 -0
  153. package/dist/ctx/queue.d.ts +25 -0
  154. package/dist/ctx/queue.js +151 -0
  155. package/dist/ctx/secrets.d.ts +45 -0
  156. package/dist/ctx/secrets.js +175 -0
  157. package/dist/db/kernel-schema.d.ts +1122 -0
  158. package/dist/db/kernel-schema.js +5 -0
  159. package/dist/db/migrator.d.ts +28 -0
  160. package/dist/db/migrator.js +140 -0
  161. package/dist/db/pool.d.ts +21 -0
  162. package/dist/db/pool.js +28 -0
  163. package/dist/db/sql-statements.d.ts +34 -0
  164. package/dist/db/sql-statements.js +168 -0
  165. package/dist/errors.d.ts +211 -0
  166. package/dist/errors.js +213 -0
  167. package/dist/evals/budget.d.ts +61 -0
  168. package/dist/evals/budget.js +181 -0
  169. package/dist/evals/diff.d.ts +55 -0
  170. package/dist/evals/diff.js +133 -0
  171. package/dist/evals/judge.d.ts +53 -0
  172. package/dist/evals/judge.js +149 -0
  173. package/dist/evals/plan.d.ts +47 -0
  174. package/dist/evals/plan.js +77 -0
  175. package/dist/evals/reconstruct.d.ts +137 -0
  176. package/dist/evals/reconstruct.js +322 -0
  177. package/dist/evals/recorded-tools.d.ts +54 -0
  178. package/dist/evals/recorded-tools.js +167 -0
  179. package/dist/evals/run-replay.d.ts +86 -0
  180. package/dist/evals/run-replay.js +502 -0
  181. package/dist/evals/runs.controller.d.ts +100 -0
  182. package/dist/evals/runs.controller.js +199 -0
  183. package/dist/evals/runs.service.d.ts +275 -0
  184. package/dist/evals/runs.service.js +836 -0
  185. package/dist/evals/sets.controller.d.ts +61 -0
  186. package/dist/evals/sets.controller.js +183 -0
  187. package/dist/evals/sets.service.d.ts +128 -0
  188. package/dist/evals/sets.service.js +558 -0
  189. package/dist/evals/snapshot.d.ts +76 -0
  190. package/dist/evals/snapshot.js +207 -0
  191. package/dist/evals/step-replay.d.ts +113 -0
  192. package/dist/evals/step-replay.js +181 -0
  193. package/dist/evals/trajectory.controller.d.ts +41 -0
  194. package/dist/evals/trajectory.controller.js +88 -0
  195. package/dist/evals/trajectory.d.ts +144 -0
  196. package/dist/evals/trajectory.js +338 -0
  197. package/dist/evals/trajectory.service.d.ts +108 -0
  198. package/dist/evals/trajectory.service.js +323 -0
  199. package/dist/evals/worker.d.ts +101 -0
  200. package/dist/evals/worker.js +790 -0
  201. package/dist/extensions/admin-ops.d.ts +105 -0
  202. package/dist/extensions/admin-ops.js +353 -0
  203. package/dist/extensions/admin-view.d.ts +79 -0
  204. package/dist/extensions/admin-view.js +327 -0
  205. package/dist/extensions/approvals.d.ts +119 -0
  206. package/dist/extensions/approvals.js +205 -0
  207. package/dist/extensions/blobs.d.ts +45 -0
  208. package/dist/extensions/blobs.js +160 -0
  209. package/dist/extensions/bootstrap.d.ts +176 -0
  210. package/dist/extensions/bootstrap.js +535 -0
  211. package/dist/extensions/cli.d.ts +61 -0
  212. package/dist/extensions/cli.js +165 -0
  213. package/dist/extensions/config-json-schema.d.ts +9 -0
  214. package/dist/extensions/config-json-schema.js +73 -0
  215. package/dist/extensions/deployment-config.d.ts +138 -0
  216. package/dist/extensions/deployment-config.js +394 -0
  217. package/dist/extensions/enabled.d.ts +31 -0
  218. package/dist/extensions/enabled.js +55 -0
  219. package/dist/extensions/hooks.d.ts +161 -0
  220. package/dist/extensions/hooks.js +425 -0
  221. package/dist/extensions/host.d.ts +577 -0
  222. package/dist/extensions/host.js +2071 -0
  223. package/dist/extensions/inflight.d.ts +69 -0
  224. package/dist/extensions/inflight.js +277 -0
  225. package/dist/extensions/installs.d.ts +166 -0
  226. package/dist/extensions/installs.js +253 -0
  227. package/dist/extensions/instance.d.ts +167 -0
  228. package/dist/extensions/instance.js +329 -0
  229. package/dist/extensions/ledger.d.ts +30 -0
  230. package/dist/extensions/ledger.js +50 -0
  231. package/dist/extensions/lifecycle.d.ts +80 -0
  232. package/dist/extensions/lifecycle.js +152 -0
  233. package/dist/extensions/migrate-lock.d.ts +51 -0
  234. package/dist/extensions/migrate-lock.js +100 -0
  235. package/dist/extensions/org-config.controller.d.ts +24 -0
  236. package/dist/extensions/org-config.controller.js +59 -0
  237. package/dist/extensions/org-config.d.ts +169 -0
  238. package/dist/extensions/org-config.js +520 -0
  239. package/dist/extensions/package.d.ts +115 -0
  240. package/dist/extensions/package.js +246 -0
  241. package/dist/extensions/permission-set.d.ts +117 -0
  242. package/dist/extensions/permission-set.js +184 -0
  243. package/dist/extensions/permission-view.d.ts +194 -0
  244. package/dist/extensions/permission-view.js +284 -0
  245. package/dist/extensions/registry.d.ts +24 -0
  246. package/dist/extensions/registry.js +56 -0
  247. package/dist/extensions/resolve.d.ts +12 -0
  248. package/dist/extensions/resolve.js +71 -0
  249. package/dist/extensions/sources.d.ts +69 -0
  250. package/dist/extensions/sources.js +120 -0
  251. package/dist/extensions/sync.d.ts +40 -0
  252. package/dist/extensions/sync.js +242 -0
  253. package/dist/files/previewers.controller.d.ts +46 -0
  254. package/dist/files/previewers.controller.js +105 -0
  255. package/dist/files/previewers.d.ts +100 -0
  256. package/dist/files/previewers.js +250 -0
  257. package/dist/http/api.module.d.ts +114 -0
  258. package/dist/http/api.module.js +448 -0
  259. package/dist/http/app.d.ts +77 -0
  260. package/dist/http/app.js +220 -0
  261. package/dist/http/error.filter.d.ts +21 -0
  262. package/dist/http/error.filter.js +85 -0
  263. package/dist/http/gateway.module.d.ts +15 -0
  264. package/dist/http/gateway.module.js +13 -0
  265. package/dist/http/health.controller.d.ts +26 -0
  266. package/dist/http/health.controller.js +79 -0
  267. package/dist/http/nest-logger.d.ts +20 -0
  268. package/dist/http/nest-logger.js +28 -0
  269. package/dist/http/plugin-dispatch.d.ts +68 -0
  270. package/dist/http/plugin-dispatch.js +200 -0
  271. package/dist/http/tokens.d.ts +131 -0
  272. package/dist/http/tokens.js +131 -0
  273. package/dist/http/zod.pipe.d.ts +8 -0
  274. package/dist/http/zod.pipe.js +14 -0
  275. package/dist/identity/accounts.d.ts +93 -0
  276. package/dist/identity/accounts.js +367 -0
  277. package/dist/identity/api-tokens.d.ts +73 -0
  278. package/dist/identity/api-tokens.js +197 -0
  279. package/dist/identity/audit.d.ts +23 -0
  280. package/dist/identity/audit.js +41 -0
  281. package/dist/identity/auth.controller.d.ts +40 -0
  282. package/dist/identity/auth.controller.js +130 -0
  283. package/dist/identity/auth.guard.d.ts +41 -0
  284. package/dist/identity/auth.guard.js +162 -0
  285. package/dist/identity/binding.d.ts +47 -0
  286. package/dist/identity/binding.js +84 -0
  287. package/dist/identity/cookies.d.ts +16 -0
  288. package/dist/identity/cookies.js +32 -0
  289. package/dist/identity/credential-check.d.ts +17 -0
  290. package/dist/identity/credential-check.js +24 -0
  291. package/dist/identity/enterprise-admin.d.ts +14 -0
  292. package/dist/identity/enterprise-admin.js +27 -0
  293. package/dist/identity/external.d.ts +106 -0
  294. package/dist/identity/external.js +337 -0
  295. package/dist/identity/hash.d.ts +2 -0
  296. package/dist/identity/hash.js +3 -0
  297. package/dist/identity/login.d.ts +6 -0
  298. package/dist/identity/login.js +20 -0
  299. package/dist/identity/me.controller.d.ts +61 -0
  300. package/dist/identity/me.controller.js +159 -0
  301. package/dist/identity/passwords.d.ts +6 -0
  302. package/dist/identity/passwords.js +37 -0
  303. package/dist/identity/principal.d.ts +56 -0
  304. package/dist/identity/principal.js +38 -0
  305. package/dist/identity/rate-limit.d.ts +55 -0
  306. package/dist/identity/rate-limit.js +121 -0
  307. package/dist/identity/sessions.d.ts +84 -0
  308. package/dist/identity/sessions.js +306 -0
  309. package/dist/identity/settings.d.ts +121 -0
  310. package/dist/identity/settings.js +248 -0
  311. package/dist/identity/sso.controller.d.ts +59 -0
  312. package/dist/identity/sso.controller.js +192 -0
  313. package/dist/identity/sso.d.ts +83 -0
  314. package/dist/identity/sso.js +202 -0
  315. package/dist/inbox/inbox.service.d.ts +43 -0
  316. package/dist/inbox/inbox.service.js +57 -0
  317. package/dist/index.d.ts +69 -0
  318. package/dist/index.js +67 -0
  319. package/dist/kernel.d.ts +259 -0
  320. package/dist/kernel.js +1326 -0
  321. package/dist/log-config.d.ts +9 -0
  322. package/dist/log-config.js +27 -0
  323. package/dist/log-context.d.ts +32 -0
  324. package/dist/log-context.js +40 -0
  325. package/dist/log-loki.d.ts +34 -0
  326. package/dist/log-loki.js +145 -0
  327. package/dist/log.d.ts +79 -0
  328. package/dist/log.js +303 -0
  329. package/dist/models/prices.d.ts +53 -0
  330. package/dist/models/prices.js +121 -0
  331. package/dist/models/purposes.controller.d.ts +19 -0
  332. package/dist/models/purposes.controller.js +56 -0
  333. package/dist/models/purposes.d.ts +140 -0
  334. package/dist/models/purposes.js +267 -0
  335. package/dist/net/proxy.d.ts +44 -0
  336. package/dist/net/proxy.js +162 -0
  337. package/dist/net/public-address.d.ts +60 -0
  338. package/dist/net/public-address.js +272 -0
  339. package/dist/net/safe-fetch.d.ts +38 -0
  340. package/dist/net/safe-fetch.js +140 -0
  341. package/dist/orgs/directory-sync.controller.d.ts +14 -0
  342. package/dist/orgs/directory-sync.controller.js +40 -0
  343. package/dist/orgs/directory-sync.d.ts +166 -0
  344. package/dist/orgs/directory-sync.js +558 -0
  345. package/dist/orgs/invitations.controller.d.ts +58 -0
  346. package/dist/orgs/invitations.controller.js +137 -0
  347. package/dist/orgs/invitations.service.d.ts +80 -0
  348. package/dist/orgs/invitations.service.js +217 -0
  349. package/dist/orgs/members.service.d.ts +63 -0
  350. package/dist/orgs/members.service.js +234 -0
  351. package/dist/orgs/offboarding.d.ts +141 -0
  352. package/dist/orgs/offboarding.js +398 -0
  353. package/dist/orgs/org-lock.d.ts +32 -0
  354. package/dist/orgs/org-lock.js +46 -0
  355. package/dist/orgs/org.guard.d.ts +35 -0
  356. package/dist/orgs/org.guard.js +95 -0
  357. package/dist/orgs/orgs.controller.d.ts +78 -0
  358. package/dist/orgs/orgs.controller.js +192 -0
  359. package/dist/orgs/orgs.service.d.ts +61 -0
  360. package/dist/orgs/orgs.service.js +209 -0
  361. package/dist/orgs/roles.d.ts +13 -0
  362. package/dist/orgs/roles.js +58 -0
  363. package/dist/orgs/settings.controller.d.ts +20 -0
  364. package/dist/orgs/settings.controller.js +53 -0
  365. package/dist/orgs/settings.service.d.ts +120 -0
  366. package/dist/orgs/settings.service.js +178 -0
  367. package/dist/packages/npm.d.ts +50 -0
  368. package/dist/packages/npm.js +218 -0
  369. package/dist/packages/provenance.d.ts +47 -0
  370. package/dist/packages/provenance.js +147 -0
  371. package/dist/packages/tgz.d.ts +76 -0
  372. package/dist/packages/tgz.js +225 -0
  373. package/dist/runtime/abort.d.ts +32 -0
  374. package/dist/runtime/abort.js +71 -0
  375. package/dist/runtime/checkpointer.d.ts +32 -0
  376. package/dist/runtime/checkpointer.js +243 -0
  377. package/dist/runtime/context/build.d.ts +254 -0
  378. package/dist/runtime/context/build.js +693 -0
  379. package/dist/runtime/context/claude-tools.d.ts +11 -0
  380. package/dist/runtime/context/claude-tools.js +24 -0
  381. package/dist/runtime/context/compaction.d.ts +26 -0
  382. package/dist/runtime/context/compaction.js +195 -0
  383. package/dist/runtime/context/pairing.d.ts +11 -0
  384. package/dist/runtime/context/pairing.js +82 -0
  385. package/dist/runtime/context/reminders.d.ts +5 -0
  386. package/dist/runtime/context/reminders.js +11 -0
  387. package/dist/runtime/context/skills.d.ts +105 -0
  388. package/dist/runtime/context/skills.js +283 -0
  389. package/dist/runtime/context/tokens.d.ts +19 -0
  390. package/dist/runtime/context/tokens.js +104 -0
  391. package/dist/runtime/conversation-lock.d.ts +40 -0
  392. package/dist/runtime/conversation-lock.js +97 -0
  393. package/dist/runtime/hook-calls.d.ts +84 -0
  394. package/dist/runtime/hook-calls.js +136 -0
  395. package/dist/runtime/langgraph-loop.d.ts +52 -0
  396. package/dist/runtime/langgraph-loop.js +247 -0
  397. package/dist/runtime/loop.d.ts +93 -0
  398. package/dist/runtime/loop.js +7 -0
  399. package/dist/runtime/maintenance.d.ts +80 -0
  400. package/dist/runtime/maintenance.js +148 -0
  401. package/dist/runtime/media-cache.d.ts +21 -0
  402. package/dist/runtime/media-cache.js +51 -0
  403. package/dist/runtime/model-call.d.ts +176 -0
  404. package/dist/runtime/model-call.js +1049 -0
  405. package/dist/runtime/providers.d.ts +86 -0
  406. package/dist/runtime/providers.js +224 -0
  407. package/dist/runtime/quota.d.ts +29 -0
  408. package/dist/runtime/quota.js +70 -0
  409. package/dist/runtime/run-finish.d.ts +45 -0
  410. package/dist/runtime/run-finish.js +69 -0
  411. package/dist/runtime/run-queue.d.ts +121 -0
  412. package/dist/runtime/run-queue.js +493 -0
  413. package/dist/runtime/run-worker.d.ts +138 -0
  414. package/dist/runtime/run-worker.js +806 -0
  415. package/dist/runtime/stream.controller.d.ts +34 -0
  416. package/dist/runtime/stream.controller.js +122 -0
  417. package/dist/runtime/stream.d.ts +63 -0
  418. package/dist/runtime/stream.js +262 -0
  419. package/dist/runtime/subagents/child.d.ts +80 -0
  420. package/dist/runtime/subagents/child.js +225 -0
  421. package/dist/runtime/subagents/definition.d.ts +103 -0
  422. package/dist/runtime/subagents/definition.js +392 -0
  423. package/dist/runtime/subagents/dispatch.d.ts +69 -0
  424. package/dist/runtime/subagents/dispatch.js +502 -0
  425. package/dist/runtime/subagents/limits.d.ts +23 -0
  426. package/dist/runtime/subagents/limits.js +34 -0
  427. package/dist/runtime/subagents/org-agents.d.ts +50 -0
  428. package/dist/runtime/subagents/org-agents.js +70 -0
  429. package/dist/runtime/subagents/preamble.d.ts +7 -0
  430. package/dist/runtime/subagents/preamble.js +11 -0
  431. package/dist/runtime/subagents/progress.d.ts +26 -0
  432. package/dist/runtime/subagents/progress.js +36 -0
  433. package/dist/runtime/subagents/roster.d.ts +55 -0
  434. package/dist/runtime/subagents/roster.js +111 -0
  435. package/dist/runtime/subagents/skill-fork.d.ts +123 -0
  436. package/dist/runtime/subagents/skill-fork.js +259 -0
  437. package/dist/runtime/usage-report.d.ts +163 -0
  438. package/dist/runtime/usage-report.js +551 -0
  439. package/dist/runtime/waits.d.ts +233 -0
  440. package/dist/runtime/waits.js +883 -0
  441. package/dist/sandbox/leases.d.ts +169 -0
  442. package/dist/sandbox/leases.js +515 -0
  443. package/dist/sandbox/lifecycle.d.ts +21 -0
  444. package/dist/sandbox/lifecycle.js +68 -0
  445. package/dist/sandbox/sandbox.service.d.ts +249 -0
  446. package/dist/sandbox/sandbox.service.js +908 -0
  447. package/dist/skills/catalog.d.ts +149 -0
  448. package/dist/skills/catalog.js +405 -0
  449. package/dist/skills/changes.controller.d.ts +56 -0
  450. package/dist/skills/changes.controller.js +136 -0
  451. package/dist/skills/changes.service.d.ts +175 -0
  452. package/dist/skills/changes.service.js +805 -0
  453. package/dist/skills/invocable.controller.d.ts +23 -0
  454. package/dist/skills/invocable.controller.js +50 -0
  455. package/dist/skills/invocation-keys.d.ts +23 -0
  456. package/dist/skills/invocation-keys.js +44 -0
  457. package/dist/skills/invoke.d.ts +135 -0
  458. package/dist/skills/invoke.js +286 -0
  459. package/dist/skills/package.d.ts +87 -0
  460. package/dist/skills/package.js +227 -0
  461. package/dist/skills/skills.controller.d.ts +40 -0
  462. package/dist/skills/skills.controller.js +110 -0
  463. package/dist/skills/skills.service.d.ts +192 -0
  464. package/dist/skills/skills.service.js +567 -0
  465. package/dist/storage/prefix.d.ts +36 -0
  466. package/dist/storage/prefix.js +104 -0
  467. package/dist/storage/purge.d.ts +27 -0
  468. package/dist/storage/purge.js +75 -0
  469. package/dist/storage/storage.service.d.ts +44 -0
  470. package/dist/storage/storage.service.js +145 -0
  471. package/dist/text.d.ts +13 -0
  472. package/dist/text.js +13 -0
  473. package/dist/tools/approvals.controller.d.ts +53 -0
  474. package/dist/tools/approvals.controller.js +128 -0
  475. package/dist/tools/approvals.service.d.ts +172 -0
  476. package/dist/tools/approvals.service.js +568 -0
  477. package/dist/tools/breaker.d.ts +28 -0
  478. package/dist/tools/breaker.js +72 -0
  479. package/dist/tools/builtins/agent.d.ts +81 -0
  480. package/dist/tools/builtins/agent.js +223 -0
  481. package/dist/tools/builtins/ask-user.d.ts +28 -0
  482. package/dist/tools/builtins/ask-user.js +139 -0
  483. package/dist/tools/builtins/read-tool-output.d.ts +18 -0
  484. package/dist/tools/builtins/read-tool-output.js +108 -0
  485. package/dist/tools/builtins/sandbox/bash.d.ts +16 -0
  486. package/dist/tools/builtins/sandbox/bash.js +137 -0
  487. package/dist/tools/builtins/sandbox/common.d.ts +116 -0
  488. package/dist/tools/builtins/sandbox/common.js +306 -0
  489. package/dist/tools/builtins/sandbox/deliver.d.ts +5 -0
  490. package/dist/tools/builtins/sandbox/deliver.js +180 -0
  491. package/dist/tools/builtins/sandbox/edit.d.ts +4 -0
  492. package/dist/tools/builtins/sandbox/edit.js +98 -0
  493. package/dist/tools/builtins/sandbox/glob-match.d.ts +25 -0
  494. package/dist/tools/builtins/sandbox/glob-match.js +240 -0
  495. package/dist/tools/builtins/sandbox/glob.d.ts +4 -0
  496. package/dist/tools/builtins/sandbox/glob.js +104 -0
  497. package/dist/tools/builtins/sandbox/grep.d.ts +9 -0
  498. package/dist/tools/builtins/sandbox/grep.js +133 -0
  499. package/dist/tools/builtins/sandbox/index.d.ts +12 -0
  500. package/dist/tools/builtins/sandbox/index.js +27 -0
  501. package/dist/tools/builtins/sandbox/names.d.ts +7 -0
  502. package/dist/tools/builtins/sandbox/names.js +20 -0
  503. package/dist/tools/builtins/sandbox/read.d.ts +8 -0
  504. package/dist/tools/builtins/sandbox/read.js +121 -0
  505. package/dist/tools/builtins/sandbox/write.d.ts +4 -0
  506. package/dist/tools/builtins/sandbox/write.js +88 -0
  507. package/dist/tools/builtins/skill-load.d.ts +53 -0
  508. package/dist/tools/builtins/skill-load.js +446 -0
  509. package/dist/tools/builtins/skill-write.d.ts +59 -0
  510. package/dist/tools/builtins/skill-write.js +244 -0
  511. package/dist/tools/builtins/tool-search.d.ts +31 -0
  512. package/dist/tools/builtins/tool-search.js +171 -0
  513. package/dist/tools/connector-content.controller.d.ts +34 -0
  514. package/dist/tools/connector-content.controller.js +78 -0
  515. package/dist/tools/connector-content.d.ts +104 -0
  516. package/dist/tools/connector-content.js +267 -0
  517. package/dist/tools/connectors.controller.d.ts +210 -0
  518. package/dist/tools/connectors.controller.js +234 -0
  519. package/dist/tools/connectors.service.d.ts +303 -0
  520. package/dist/tools/connectors.service.js +1102 -0
  521. package/dist/tools/credentials.d.ts +139 -0
  522. package/dist/tools/credentials.js +351 -0
  523. package/dist/tools/drift.d.ts +141 -0
  524. package/dist/tools/drift.js +539 -0
  525. package/dist/tools/elicitation.d.ts +81 -0
  526. package/dist/tools/elicitation.js +266 -0
  527. package/dist/tools/endpoint.d.ts +18 -0
  528. package/dist/tools/endpoint.js +115 -0
  529. package/dist/tools/info.d.ts +67 -0
  530. package/dist/tools/info.js +113 -0
  531. package/dist/tools/naming.d.ts +27 -0
  532. package/dist/tools/naming.js +47 -0
  533. package/dist/tools/oauth/discovery.d.ts +65 -0
  534. package/dist/tools/oauth/discovery.js +307 -0
  535. package/dist/tools/oauth/flow.d.ts +63 -0
  536. package/dist/tools/oauth/flow.js +237 -0
  537. package/dist/tools/oauth/oauth.controller.d.ts +31 -0
  538. package/dist/tools/oauth/oauth.controller.js +95 -0
  539. package/dist/tools/oauth/tokens.d.ts +111 -0
  540. package/dist/tools/oauth/tokens.js +258 -0
  541. package/dist/tools/outputs.d.ts +61 -0
  542. package/dist/tools/outputs.js +156 -0
  543. package/dist/tools/pipeline.d.ts +322 -0
  544. package/dist/tools/pipeline.js +1236 -0
  545. package/dist/tools/policy.d.ts +60 -0
  546. package/dist/tools/policy.js +236 -0
  547. package/dist/tools/questions.controller.d.ts +24 -0
  548. package/dist/tools/questions.controller.js +58 -0
  549. package/dist/tools/questions.service.d.ts +103 -0
  550. package/dist/tools/questions.service.js +295 -0
  551. package/dist/tools/redact.d.ts +20 -0
  552. package/dist/tools/redact.js +60 -0
  553. package/dist/tools/registry.d.ts +246 -0
  554. package/dist/tools/registry.js +481 -0
  555. package/dist/tools/resources.d.ts +16 -0
  556. package/dist/tools/resources.js +76 -0
  557. package/dist/tools/specs.d.ts +14 -0
  558. package/dist/tools/specs.js +31 -0
  559. package/dist/tools/validate.d.ts +20 -0
  560. package/dist/tools/validate.js +183 -0
  561. package/dist/tools/view.d.ts +43 -0
  562. package/dist/tools/view.js +225 -0
  563. package/dist/ui/embed-token.d.ts +31 -0
  564. package/dist/ui/embed-token.js +132 -0
  565. package/dist/ui/registry.d.ts +58 -0
  566. package/dist/ui/registry.js +90 -0
  567. package/dist/ui/ui-stream.d.ts +37 -0
  568. package/dist/ui/ui-stream.js +162 -0
  569. package/dist/ui/views.controller.d.ts +81 -0
  570. package/dist/ui/views.controller.js +261 -0
  571. package/dist/ui/views.d.ts +155 -0
  572. package/dist/ui/views.js +306 -0
  573. package/dist/version.d.ts +5 -0
  574. package/dist/version.js +6 -0
  575. package/package.json +69 -3
  576. package/src/migrations/0001_init.sql +8 -0
  577. package/src/migrations/0002_secrets.sql +8 -0
  578. package/src/migrations/0003_identity.sql +117 -0
  579. package/src/migrations/0004_plugin_org_config_nullable.sql +3 -0
  580. package/src/migrations/0005_agents.sql +27 -0
  581. package/src/migrations/0006_conversations.sql +37 -0
  582. package/src/migrations/0007_checkpoints.sql +26 -0
  583. package/src/migrations/0008_runs_trigger_seq.sql +3 -0
  584. package/src/migrations/0009_runs_active_unique.sql +4 -0
  585. package/src/migrations/0010_tools.sql +125 -0
  586. package/src/migrations/0011_approvals_spec.sql +10 -0
  587. package/src/migrations/0012_run_waits.sql +24 -0
  588. package/src/migrations/0013_app_tools_source.sql +4 -0
  589. package/src/migrations/0014_tool_specs.sql +8 -0
  590. package/src/migrations/0015_tool_drift.sql +20 -0
  591. package/src/migrations/0016_plugin_permissions.sql +11 -0
  592. package/src/migrations/0017_identity_sources.sql +6 -0
  593. package/src/migrations/0018_channels.sql +74 -0
  594. package/src/migrations/0019_identity_trust.sql +17 -0
  595. package/src/migrations/0020_channel_card_lookup.sql +10 -0
  596. package/src/migrations/0021_org_storage_purge.sql +9 -0
  597. package/src/migrations/0022_attachments.sql +29 -0
  598. package/src/migrations/0023_sandboxes.sql +37 -0
  599. package/src/migrations/0024_skills.sql +46 -0
  600. package/src/migrations/0025_skills_catalog_idx.sql +6 -0
  601. package/src/migrations/0026_skill_changes.sql +34 -0
  602. package/src/migrations/0027_model_prices.sql +18 -0
  603. package/src/migrations/0028_evals.sql +105 -0
  604. package/src/migrations/0029_model_purposes.sql +18 -0
  605. package/src/migrations/0030_plugin_installs.sql +73 -0
  606. package/src/migrations/0031_plugin_snapshot_source.sql +6 -0
  607. package/src/migrations/0032_plugin_deployment_configs.sql +10 -0
  608. package/src/migrations/0033_rename_apps_to_connectors.sql +25 -0
  609. package/src/migrations/0034_directory.sql +49 -0
  610. package/src/migrations/0035_catalogs.sql +40 -0
  611. package/src/migrations/0036_app_import_staging.sql +17 -0
  612. package/src/migrations/0037_directory_installs.sql +92 -0
  613. package/src/migrations/0038_channel_inbound_mode.sql +6 -0
  614. package/src/migrations/0039_channel_card_pending.sql +8 -0
  615. package/src/migrations/0040_usage_report_sweep.sql +10 -0
  616. package/src/migrations/0041_rename_plugins_to_extensions.sql +38 -0
  617. package/src/migrations/0042_rename_directory_to_catalog.sql +80 -0
  618. package/src/migrations/0043_rename_app_installs_to_plugin_installs.sql +20 -0
  619. package/src/migrations/0044_catalog_one_kind.sql +90 -0
  620. package/src/migrations/0045_plugin_dependencies.sql +9 -0
  621. package/src/migrations/0046_git_sources.sql +25 -0
  622. package/src/migrations/0047_marketplace_entry_heads.sql +7 -0
  623. package/src/migrations/0048_marketplace_entry_trees.sql +8 -0
  624. package/src/migrations/0049_plugin_upgrades.sql +37 -0
  625. package/src/migrations/0050_bootstrap.sql +53 -0
  626. package/src/migrations/0051_claude_compat.sql +26 -0
  627. package/src/migrations/0052_conversations_account_agent_idx.sql +5 -0
  628. package/src/migrations/0053_subagents.sql +73 -0
  629. package/src/migrations/0054_subagent_wait_expiry.sql +7 -0
  630. package/src/migrations/0055_subagent_parent_indexes.sql +10 -0
  631. package/src/migrations/0056_approval_reason.sql +3 -0
  632. package/src/migrations/0057_conversation_titles.sql +11 -0
  633. package/src/migrations/0058_conversation_selection.sql +4 -0
  634. package/src/migrations/0059_conversation_queue.sql +22 -0
  635. package/src/migrations/0060_file_previewers.sql +10 -0
  636. package/src/migrations/0061_queue_selection.sql +5 -0
  637. package/src/migrations/0062_queued_skill.sql +8 -0
@@ -0,0 +1,46 @@
1
+ -- M5 T13:技能库。技能文件在对象存储 kernel/<org_id>/<skill_versions.object_prefix><path>,这里只存元数据。
2
+ -- scope:org(组织技能库,管理员上传,agent 定义里按 id 引用)/ agent(该 agent 自己的技能,自动对它生效,
3
+ -- T15 由 agent 提议、负责人批准后创建);agent_id 只在 scope='agent' 时有值。
4
+ -- 同一作用域下未删除的技能按 name 唯一:上传同名技能包 = 新增一个版本(current_version + 1)。
5
+ -- 删除为软删除(deleted_at);版本与对象保留(对象随组织数据清理一并删除)。
6
+ CREATE TABLE IF NOT EXISTS skills (
7
+ id text PRIMARY KEY,
8
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
9
+ scope text NOT NULL CHECK (scope IN ('org', 'agent')),
10
+ agent_id text REFERENCES agents(id) ON DELETE CASCADE,
11
+ name text NOT NULL,
12
+ -- 当前版本 SKILL.md 的 description(列表直接读,不查版本)
13
+ description text NOT NULL,
14
+ current_version integer NOT NULL CHECK (current_version >= 1),
15
+ created_by text NOT NULL REFERENCES accounts(id),
16
+ created_at timestamptz NOT NULL DEFAULT now(),
17
+ updated_at timestamptz NOT NULL DEFAULT now(),
18
+ deleted_at timestamptz,
19
+ CHECK ((scope = 'agent') = (agent_id IS NOT NULL))
20
+ );
21
+ CREATE UNIQUE INDEX IF NOT EXISTS skills_live_name_uq
22
+ ON skills (org_id, scope, coalesce(agent_id, ''), name)
23
+ WHERE deleted_at IS NULL;
24
+ CREATE INDEX IF NOT EXISTS skills_agent_idx
25
+ ON skills (agent_id)
26
+ WHERE agent_id IS NOT NULL AND deleted_at IS NULL;
27
+
28
+ -- 每个版本的清单:manifest = { name, description, files: [{ path, size, sha256 }] };
29
+ -- object_prefix 是该版本文件在 kernel/<org_id>/ 下的键前缀(以 / 结尾),文件键 = object_prefix || path。
30
+ CREATE TABLE IF NOT EXISTS skill_versions (
31
+ skill_id text NOT NULL REFERENCES skills(id) ON DELETE CASCADE,
32
+ version integer NOT NULL CHECK (version >= 1),
33
+ manifest jsonb NOT NULL,
34
+ object_prefix text NOT NULL,
35
+ created_by text NOT NULL REFERENCES accounts(id),
36
+ created_at timestamptz NOT NULL DEFAULT now(),
37
+ PRIMARY KEY (skill_id, version)
38
+ );
39
+ -- 清理未用上的技能包上传时按前缀判断文件是否已被某个版本引用
40
+ CREATE INDEX IF NOT EXISTS skill_versions_prefix_idx ON skill_versions (object_prefix);
41
+
42
+ -- 预签名上传的用途:chat(对话附件,可绑定到消息)/ skill-package(技能包 zip,只供 POST /skills 使用,
43
+ -- 不能绑定到消息、不能下载;有自己的待完成上限与过期时间)。已有的行都是对话附件。
44
+ ALTER TABLE attachments
45
+ ADD COLUMN IF NOT EXISTS purpose text NOT NULL DEFAULT 'chat'
46
+ CHECK (purpose IN ('chat', 'skill-package'));
@@ -0,0 +1,6 @@
1
+ -- M5 T14:按会话取最新一份技能目录快照(skills_catalog,Ruling M17)。每次运行开始与每步工具执行都要查,
2
+ -- 部分索引让查询不必倒序扫完整个会话的事件。
3
+ -- 不用 CONCURRENTLY:与其他迁移的写法一致(发布前没有需要在线建索引的大表)。
4
+ CREATE INDEX IF NOT EXISTS conversation_events_skills_catalog_idx
5
+ ON conversation_events (conversation_id, seq)
6
+ WHERE type = 'skills_catalog';
@@ -0,0 +1,34 @@
1
+ -- M5 T15:共享 agent 的技能变更申请(R4)。agent 用 skill_write 改自己的技能时,共享 agent(visibility 不是
2
+ -- private)不直接生成版本,而是在这里记一条申请,等该 agent 的负责人批准。
3
+ -- proposed_version = { skillId, version, manifest: { name, description, files: [{ path, size, sha256 }] } }:
4
+ -- skillId 为已有技能的 id,或新技能预先分配的 id(批准时用它建 skills 行);version 是批准后预期的版本号。
5
+ -- object_prefix 是草稿文件在 kernel/<org_id>/ 下的键前缀(以 / 结尾),批准后原样成为该版本的 object_prefix;
6
+ -- 拒绝 / 取消时删除。
7
+ -- skill_id 为 null 表示新技能。pending 期间只有发起对话(requested_in_conversation)用草稿版本(试用)。
8
+ CREATE TABLE IF NOT EXISTS skill_change_requests (
9
+ id text PRIMARY KEY,
10
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
11
+ agent_id text NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
12
+ skill_id text REFERENCES skills(id) ON DELETE CASCADE,
13
+ proposed_version jsonb NOT NULL,
14
+ object_prefix text NOT NULL,
15
+ requested_by_account text NOT NULL REFERENCES accounts(id),
16
+ requested_in_conversation text NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
17
+ status text NOT NULL DEFAULT 'pending'
18
+ CHECK (status IN ('pending', 'approved', 'rejected', 'cancelled')),
19
+ decided_by text REFERENCES accounts(id),
20
+ decided_at timestamptz,
21
+ created_at timestamptz NOT NULL DEFAULT now()
22
+ );
23
+ -- 同一 agent 的同名技能最多一条待处理的申请(同一对话再写会取代旧的,别的对话再写被拒绝)
24
+ CREATE UNIQUE INDEX IF NOT EXISTS skill_change_requests_pending_name_uq
25
+ ON skill_change_requests (agent_id, (proposed_version -> 'manifest' ->> 'name'))
26
+ WHERE status = 'pending';
27
+ -- 运行开始解析技能目录时按发起对话找试用中的申请
28
+ CREATE INDEX IF NOT EXISTS skill_change_requests_conversation_idx
29
+ ON skill_change_requests (requested_in_conversation)
30
+ WHERE status = 'pending';
31
+ -- 收件箱:按组织列出待处理的申请
32
+ CREATE INDEX IF NOT EXISTS skill_change_requests_org_pending_idx
33
+ ON skill_change_requests (org_id, created_at)
34
+ WHERE status = 'pending';
@@ -0,0 +1,18 @@
1
+ -- M6 T1:模型价格表(C2)。成本在读取时按这里的价格计算,不写进事件日志;单位为每百万 token,
2
+ -- 币种为部署设置 priceCurrency。由企业管理员录入;插件不声明价格。缓存读 / 写价为 NULL 时按输入价计。
3
+ CREATE TABLE IF NOT EXISTS model_prices (
4
+ provider text NOT NULL,
5
+ model text NOT NULL,
6
+ input_per_mtok numeric NOT NULL CHECK (input_per_mtok >= 0),
7
+ output_per_mtok numeric NOT NULL CHECK (output_per_mtok >= 0),
8
+ cache_read_per_mtok numeric CHECK (cache_read_per_mtok >= 0),
9
+ cache_write_per_mtok numeric CHECK (cache_write_per_mtok >= 0),
10
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
11
+ updated_at timestamptz NOT NULL DEFAULT now(),
12
+ PRIMARY KEY (provider, model)
13
+ );
14
+ -- 轨迹列表:按 agent 筛选、按最近更新倒序(TrajectoryService.list)
15
+ CREATE INDEX IF NOT EXISTS conversations_agent_idx ON conversations (org_id, agent_id, updated_at DESC);
16
+ -- 轨迹按运行窗口读事件(EventLog.readRunsAfter):按 (会话, 运行, seq) 取,往前翻页时不扫更晚运行的事件
17
+ CREATE INDEX IF NOT EXISTS conversation_events_run_idx
18
+ ON conversation_events (conversation_id, run_id, seq) WHERE run_id IS NOT NULL;
@@ -0,0 +1,105 @@
1
+ -- M6 T3:评测集、用例、评测运行与结果(D4、C3–C7)。一个评测集对应一个 agent;用例是某次真实运行的日志快照
2
+ -- (eval_cases.snapshot,≤ evals.maxCaseBytes),不引用原对话:原对话删除后用例照常可读、可回放。
3
+ -- 评测数据只在本组织内。删除评测集(Ruling S1-a):用例(含快照)硬删,结果随之级联删除,集合行留作软删除
4
+ -- (deleted_at)的审计存根,运行行保留。eval_runs / eval_results 由 T4 起写入。
5
+ CREATE TABLE IF NOT EXISTS eval_sets (
6
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
7
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
8
+ agent_id text NOT NULL REFERENCES agents(id),
9
+ name text NOT NULL,
10
+ description text NOT NULL DEFAULT '',
11
+ -- 评委评分标准(T6);NULL = 用默认标准
12
+ rubric text,
13
+ created_by text NOT NULL REFERENCES accounts(id),
14
+ created_at timestamptz NOT NULL DEFAULT now(),
15
+ updated_at timestamptz NOT NULL DEFAULT now(),
16
+ deleted_at timestamptz
17
+ );
18
+ CREATE INDEX IF NOT EXISTS eval_sets_org_idx ON eval_sets (org_id, created_at DESC) WHERE deleted_at IS NULL;
19
+
20
+ -- source_conversation_id / source_run_id 只是来源记录,不设外键(原对话可被删除)。
21
+ -- replayable_steps = replayableCalls(snapshot).length,写入时算好,列表不必读快照。
22
+ -- plan_step / plan_run:两种回放模式的计划(预建结果的 step / seq、预计请求数、原运行用量、评委上下文 token),
23
+ -- base_model:用例原版本的模型(快照与 agent_versions 都没有定义时为 NULL)。写入时算好,估算与启动不读快照。
24
+ CREATE TABLE IF NOT EXISTS eval_cases (
25
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
26
+ set_id uuid NOT NULL REFERENCES eval_sets(id) ON DELETE CASCADE,
27
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
28
+ source_conversation_id text NOT NULL,
29
+ source_run_id text NOT NULL,
30
+ agent_version integer NOT NULL,
31
+ title text NOT NULL,
32
+ snapshot jsonb NOT NULL,
33
+ snapshot_bytes integer NOT NULL CHECK (snapshot_bytes >= 0),
34
+ replayable_steps integer NOT NULL DEFAULT 0 CHECK (replayable_steps >= 0),
35
+ plan_step jsonb NOT NULL,
36
+ plan_run jsonb NOT NULL,
37
+ base_model jsonb,
38
+ added_by text NOT NULL REFERENCES accounts(id),
39
+ created_at timestamptz NOT NULL DEFAULT now(),
40
+ UNIQUE (set_id, source_run_id)
41
+ );
42
+
43
+ CREATE TABLE IF NOT EXISTS eval_runs (
44
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
45
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
46
+ set_id uuid NOT NULL REFERENCES eval_sets(id) ON DELETE CASCADE,
47
+ mode text NOT NULL CHECK (mode IN ('step', 'run')),
48
+ candidate jsonb NOT NULL,
49
+ judge boolean NOT NULL DEFAULT false,
50
+ token_cap bigint NOT NULL CHECK (token_cap > 0),
51
+ tokens_used bigint NOT NULL DEFAULT 0,
52
+ status text NOT NULL DEFAULT 'queued'
53
+ CHECK (status IN ('queued', 'running', 'completed', 'cancelled', 'capped', 'failed')),
54
+ cases_total integer NOT NULL,
55
+ cases_done integer NOT NULL DEFAULT 0,
56
+ -- 连续出错的结果数(成功即清零);达到 evals.maxConsecutiveErrors 时运行置 failed,原因记在 error
57
+ consecutive_errors integer NOT NULL DEFAULT 0,
58
+ -- 运行失败的原因 {code, message}(英文;界面按 code 走 i18n)
59
+ error jsonb,
60
+ estimate jsonb NOT NULL,
61
+ created_by text NOT NULL REFERENCES accounts(id),
62
+ created_at timestamptz NOT NULL DEFAULT now(),
63
+ started_at timestamptz,
64
+ finished_at timestamptz
65
+ );
66
+ CREATE INDEX IF NOT EXISTS eval_runs_set_idx ON eval_runs (set_id, created_at DESC);
67
+
68
+ CREATE TABLE IF NOT EXISTS eval_results (
69
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
70
+ run_id uuid NOT NULL REFERENCES eval_runs(id) ON DELETE CASCADE,
71
+ case_id uuid NOT NULL REFERENCES eval_cases(id) ON DELETE CASCADE,
72
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
73
+ step integer,
74
+ model_call_seq bigint,
75
+ status text NOT NULL DEFAULT 'pending'
76
+ CHECK (status IN ('pending', 'running', 'done', 'error', 'skipped')),
77
+ baseline jsonb,
78
+ candidate jsonb,
79
+ diff jsonb,
80
+ judge jsonb,
81
+ drift text[] NOT NULL DEFAULT '{}',
82
+ error jsonb,
83
+ eval_conversation_id text,
84
+ -- 认领该结果的任务尝试(每次执行一个新 uuid):写 done 与计费都以它为条件,失去认领的旧执行者写不进来
85
+ claimed_by text,
86
+ label text CHECK (label IN ('pass', 'fail')),
87
+ label_note text,
88
+ labeled_by text REFERENCES accounts(id) ON DELETE SET NULL,
89
+ labeled_at timestamptz,
90
+ created_at timestamptz NOT NULL DEFAULT now(),
91
+ updated_at timestamptz NOT NULL DEFAULT now()
92
+ );
93
+ CREATE INDEX IF NOT EXISTS eval_results_run_idx ON eval_results (run_id, id);
94
+ CREATE INDEX IF NOT EXISTS eval_results_case_idx ON eval_results (case_id);
95
+
96
+ -- 对话种类:chat(普通对话)/ eval(整轮回放用的隐藏对话,T5;不在「我的对话」里)。
97
+ ALTER TABLE conversations
98
+ ADD COLUMN IF NOT EXISTS kind text NOT NULL DEFAULT 'chat' CHECK (kind IN ('chat', 'eval'));
99
+ ALTER TABLE conversations
100
+ ADD COLUMN IF NOT EXISTS eval_run_id uuid REFERENCES eval_runs(id) ON DELETE SET NULL;
101
+ -- 轨迹列表(TrajectoryService.list)不按 agent 筛选时按 (org_id, kind) 取、按 (updated_at, id) 倒序
102
+ CREATE INDEX IF NOT EXISTS conversations_org_kind_idx
103
+ ON conversations (org_id, kind, updated_at DESC, id DESC);
104
+ -- 删除评测集 / 组织清理按运行找评测对话
105
+ CREATE INDEX IF NOT EXISTS conversations_eval_run_idx ON conversations (eval_run_id) WHERE kind = 'eval';
@@ -0,0 +1,18 @@
1
+ -- M6 T6:模型用途映射(C9)。org_id 为 NULL 的一行是部署默认(企业管理员设),组织可覆盖(组织管理员设)。
2
+ -- 用途是内核用途(目前只有 eval)或已加载插件 permissions.models 声明的;params 已按目标模型的声明校验。
3
+ -- 每个(组织 / 部署, 用途)至多一行:NULLS NOT DISTINCT 让部署默认也只有一行(需要 PG ≥ 15)。
4
+ CREATE TABLE IF NOT EXISTS model_purpose_mappings (
5
+ org_id text REFERENCES orgs(id) ON DELETE CASCADE,
6
+ purpose text NOT NULL,
7
+ provider text NOT NULL,
8
+ model text NOT NULL,
9
+ params jsonb NOT NULL DEFAULT '{}',
10
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
11
+ updated_at timestamptz NOT NULL DEFAULT now(),
12
+ CONSTRAINT model_purpose_mappings_scope_key UNIQUE NULLS NOT DISTINCT (org_id, purpose)
13
+ );
14
+
15
+ -- 评委状态(T6):none = 不评;pending = 结果已 done、评委还没做;done / error = 已给出结论 / 失败;
16
+ -- skipped = 运行在评委之前停下(取消 / 越限 / 熔断)。用例在没有 pending 的评委之前不算做完。
17
+ ALTER TABLE eval_results ADD COLUMN IF NOT EXISTS judge_status text NOT NULL DEFAULT 'none'
18
+ CHECK (judge_status IN ('none', 'pending', 'done', 'error', 'skipped'));
@@ -0,0 +1,73 @@
1
+ -- M6 T11:插件安装记录、内容寻址包存储与各副本的加载状态(C13)。
2
+ -- 包按整个 tgz 的 sha256 寻址;字节放对象存储 deployment/plugins/blobs/<sha256>.tgz(blob_store = object),
3
+ -- 没有对象存储或由 CLI 写入时放 plugin_blobs(blob_store = pg,同受 packages.maxBytes 限制)。
4
+ -- name 是插件清单名,package_name 是 package.json 的 npm 包名(同名插件换了包名视为冲突)。
5
+ CREATE TABLE IF NOT EXISTS plugin_packages (
6
+ sha256 text PRIMARY KEY CHECK (sha256 ~ '^[0-9a-f]{64}$'),
7
+ name text NOT NULL,
8
+ package_name text NOT NULL,
9
+ version text NOT NULL,
10
+ size bigint NOT NULL CHECK (size > 0),
11
+ section jsonb NOT NULL,
12
+ blob_store text NOT NULL CHECK (blob_store IN ('object', 'pg')),
13
+ source text NOT NULL CHECK (source IN ('npm', 'file', 'directory')),
14
+ source_ref text NOT NULL,
15
+ uploaded_by text REFERENCES accounts(id) ON DELETE SET NULL,
16
+ created_at timestamptz NOT NULL DEFAULT now()
17
+ );
18
+
19
+ CREATE INDEX IF NOT EXISTS plugin_packages_name_idx ON plugin_packages (name, created_at DESC);
20
+
21
+ CREATE TABLE IF NOT EXISTS plugin_blobs (
22
+ sha256 text PRIMARY KEY REFERENCES plugin_packages(sha256) ON DELETE CASCADE,
23
+ bytes bytea NOT NULL
24
+ );
25
+
26
+ -- 每插件一行:期望的版本与状态(后台只写这里,各副本收敛)。migrated_sha = 已执行过其迁移的包。
27
+ CREATE TABLE IF NOT EXISTS plugin_installs (
28
+ name text PRIMARY KEY,
29
+ sha256 text NOT NULL REFERENCES plugin_packages(sha256),
30
+ version text NOT NULL,
31
+ source text NOT NULL CHECK (source IN ('npm', 'file', 'directory')),
32
+ desired_state text NOT NULL DEFAULT 'disabled' CHECK (desired_state IN ('enabled', 'disabled')),
33
+ migrated_sha text,
34
+ installed_by text REFERENCES accounts(id) ON DELETE SET NULL,
35
+ installed_at timestamptz NOT NULL DEFAULT now(),
36
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
37
+ updated_at timestamptz NOT NULL DEFAULT now()
38
+ );
39
+
40
+ -- 插件名归哪个 npm 包(Ruling P3):第一次安装时写入,卸载不删。卸载保留数据、密钥、批准快照与组织启用,
41
+ -- 另一个 npm 包不能用同名插件接手这些。只上传、没安装过的包不占名字。
42
+ CREATE TABLE IF NOT EXISTS plugin_name_owners (
43
+ name text PRIMARY KEY,
44
+ package_name text NOT NULL,
45
+ created_at timestamptz NOT NULL DEFAULT now()
46
+ );
47
+
48
+ INSERT INTO plugin_name_owners (name, package_name)
49
+ SELECT plugin_installs.name, plugin_packages.package_name
50
+ FROM plugin_installs
51
+ JOIN plugin_packages ON plugin_packages.sha256 = plugin_installs.sha256
52
+ ON CONFLICT DO NOTHING;
53
+
54
+ -- 每个副本(进程)每个插件的加载结果;replica_id 是进程级的 <hostname>-<pid>-<6 位随机>,
55
+ -- http_replica_id 是配置的 http.replicaId(有就记,便于与 x-capybara-replica 对照)。
56
+ -- state = pending 时 reason 为 config / approval / migration / dependency。
57
+ -- serving_version:这一行的版本没加载成(failed / pending)而本副本仍在用旧版本时,旧版本号;否则为空。
58
+ CREATE TABLE IF NOT EXISTS plugin_replica_status (
59
+ replica_id text NOT NULL,
60
+ plugin text NOT NULL,
61
+ version text NOT NULL,
62
+ sha256 text,
63
+ source text NOT NULL CHECK (source IN ('builtin', 'config', 'install')),
64
+ state text NOT NULL CHECK (state IN ('loaded', 'failed', 'unloaded', 'pending')),
65
+ reason text,
66
+ detail text,
67
+ serving_version text,
68
+ http_replica_id text,
69
+ heartbeat_at timestamptz NOT NULL DEFAULT now(),
70
+ PRIMARY KEY (replica_id, plugin)
71
+ );
72
+
73
+ CREATE INDEX IF NOT EXISTS plugin_replica_status_plugin_idx ON plugin_replica_status (plugin);
@@ -0,0 +1,6 @@
1
+ -- M6 T13:网页批准插件权限(D8),快照来源加 'web'。0016 的 CHECK 是内联匿名约束(默认名
2
+ -- plugin_permission_snapshots_source_check),先删后加;整个文件在一个事务里,可重复执行。
3
+ ALTER TABLE plugin_permission_snapshots
4
+ DROP CONSTRAINT IF EXISTS plugin_permission_snapshots_source_check;
5
+ ALTER TABLE plugin_permission_snapshots
6
+ ADD CONSTRAINT plugin_permission_snapshots_source_check CHECK (source IN ('cli', 'auto', 'web'));
@@ -0,0 +1,10 @@
1
+ -- M6 T15:部署级插件配置存 PG(D8 / C10)。只存非密钥字段(按点路径嵌套的对象);密钥字段各自加密存
2
+ -- capybara.secrets(namespace kernel、org_id '_deployment'、键 plugin-deployment-config:<plugin>:<path>)。
3
+ -- 优先级:环境变量 > 文件 / Nacos > 这里 > schema 默认值;文件或环境变量里有的字段只读。
4
+ -- 内置、配置声明与安装记录的插件都可以在这里配;卸载插件不删这一行(数据保留)。
5
+ CREATE TABLE IF NOT EXISTS plugin_deployment_configs (
6
+ plugin text PRIMARY KEY,
7
+ config jsonb NOT NULL DEFAULT '{}'::jsonb,
8
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
9
+ updated_at timestamptz NOT NULL DEFAULT now()
10
+ );
@@ -0,0 +1,25 @@
1
+ -- D17:「应用 / app」(远端服务实例)改名「连接器 / connector」。表与 app_id 列改名;索引与约束名不改
2
+ -- (如 apps_org_slug_uniq、app_tools_policy_source_check)。secrets 键 credentials:app:*、已存 agent 版本里的
3
+ -- {kind:"app"}、事件 payload 的 appId 与旧审计记录 app.* 不改(C27)。不建兼容视图(C28)。
4
+
5
+ -- capybara:allow-destructive D17 应用 → 连接器全量改名;同一发布内代码与 web 同步改名(项目未发布,无兼容层,C28)
6
+ ALTER TABLE IF EXISTS apps RENAME TO connectors;
7
+ -- capybara:allow-destructive D17 应用 → 连接器全量改名;同一发布内代码与 web 同步改名(项目未发布,无兼容层,C28)
8
+ ALTER TABLE IF EXISTS app_tools RENAME TO connector_tools;
9
+
10
+ -- RENAME COLUMN 没有 IF EXISTS:按 information_schema 判断后再改,重复执行无副作用。
11
+ -- capybara:allow-destructive D17 应用 → 连接器全量改名;同一发布内代码与 web 同步改名(项目未发布,无兼容层,C28)
12
+ DO $$
13
+ DECLARE
14
+ t text;
15
+ BEGIN
16
+ FOREACH t IN ARRAY ARRAY['connector_tools', 'tool_grants', 'conversation_tool_grants', 'approvals'] LOOP
17
+ IF EXISTS (
18
+ SELECT 1 FROM information_schema.columns
19
+ WHERE table_schema = 'capybara' AND table_name = t AND column_name = 'app_id'
20
+ ) THEN
21
+ EXECUTE format('ALTER TABLE capybara.%I RENAME COLUMN app_id TO connector_id', t);
22
+ END IF;
23
+ END LOOP;
24
+ END
25
+ $$;
@@ -0,0 +1,49 @@
1
+ -- M6 T23:企业目录条目与版本(D9 / C21 / C22)。四种 kind:plugin、connector-template、skill、app(T25)。
2
+ -- name:plugin 为插件清单名,skill 为 SKILL.md 的 name,connector-template 为去掉 scope 的 npm 包名。
3
+ -- package_name:条目的 npm 包名;同一条目的新版本必须来自同一个包(别的包用同名 → directory.name_conflict)。
4
+ -- 策略:allow(新导入默认)/ needs_approval / disabled,只挂在条目上。删除为软删除(deleted_at):
5
+ -- 版本行与存储里的文件保留(已从目录安装的组件仍引用它们);删除后同一 (kind, name) 可以重新导入成新条目。
6
+ CREATE TABLE IF NOT EXISTS directory_items (
7
+ id uuid PRIMARY KEY,
8
+ kind text NOT NULL CHECK (kind IN ('plugin', 'connector-template', 'skill', 'app')),
9
+ name text NOT NULL,
10
+ package_name text NOT NULL,
11
+ publisher text NOT NULL,
12
+ display_name jsonb,
13
+ description text NOT NULL,
14
+ policy text NOT NULL DEFAULT 'allow' CHECK (policy IN ('allow', 'needs_approval', 'disabled')),
15
+ latest_version text NOT NULL,
16
+ created_by text REFERENCES accounts(id) ON DELETE SET NULL,
17
+ created_at timestamptz NOT NULL DEFAULT now(),
18
+ updated_at timestamptz NOT NULL DEFAULT now(),
19
+ deleted_at timestamptz
20
+ );
21
+ CREATE UNIQUE INDEX IF NOT EXISTS directory_items_live_name_uq
22
+ ON directory_items (kind, name)
23
+ WHERE deleted_at IS NULL;
24
+
25
+ -- 每个导入的版本:section = package.json 的 capybara 段(原样);source file / npm(T24 加 catalog),
26
+ -- source_ref:file 为 upload,npm 为 <包名>@<版本>;integrity:npm 下载时校验所用的 sha512(file 为空)。
27
+ -- plugin:plugin_sha256 指向包存储(plugin_packages),object_prefix 为空;
28
+ -- skill / connector-template:文件在对象存储 deployment/<object_prefix><path>,object_prefix =
29
+ -- directory/<item_id>/<version>/;files = [{ path, size, sha256 }]。resolved 留给应用包(T25)。
30
+ CREATE TABLE IF NOT EXISTS directory_item_versions (
31
+ item_id uuid NOT NULL REFERENCES directory_items(id) ON DELETE CASCADE,
32
+ version text NOT NULL,
33
+ section jsonb NOT NULL,
34
+ source text NOT NULL CHECK (source IN ('file', 'npm')),
35
+ source_ref text NOT NULL,
36
+ integrity text,
37
+ object_prefix text,
38
+ plugin_sha256 text REFERENCES plugin_packages(sha256),
39
+ resolved jsonb,
40
+ files jsonb NOT NULL DEFAULT '[]'::jsonb,
41
+ size bigint NOT NULL CHECK (size > 0),
42
+ imported_by text REFERENCES accounts(id) ON DELETE SET NULL,
43
+ imported_at timestamptz NOT NULL DEFAULT now(),
44
+ PRIMARY KEY (item_id, version)
45
+ );
46
+
47
+ -- F-AA:经目录装到部署的插件记下来源条目(T26 据此让组织启用受目录策略约束);不经目录安装时为空。
48
+ ALTER TABLE plugin_installs
49
+ ADD COLUMN IF NOT EXISTS directory_item_id uuid REFERENCES directory_items(id) ON DELETE SET NULL;
@@ -0,0 +1,40 @@
1
+ -- M6 T24:目录来源(D16 / C25 / C26)。官方清单(id 'official',builtin,地址来自配置 catalogs.official.*,
2
+ -- 每次启动按配置同步)与企业清单(id 为 uuid,企业管理员维护;可选令牌存 secrets:namespace kernel、
3
+ -- org_id _deployment、键 catalog-token:<id>)。enabled:后台的启停(official 另受配置 catalogs.official.enabled 约束)。
4
+ -- etag:上次成功拉取的 ETag(下次带 If-None-Match);last_status:never / ok / error;拉取或校验失败保留上一份条目。
5
+ CREATE TABLE IF NOT EXISTS catalog_sources (
6
+ id text PRIMARY KEY,
7
+ name text NOT NULL,
8
+ url text NOT NULL,
9
+ mirrors jsonb NOT NULL DEFAULT '[]'::jsonb,
10
+ builtin boolean NOT NULL DEFAULT false,
11
+ enabled boolean NOT NULL DEFAULT true,
12
+ etag text,
13
+ last_refreshed_at timestamptz,
14
+ last_status text NOT NULL DEFAULT 'never' CHECK (last_status IN ('ok', 'error', 'never')),
15
+ last_error text,
16
+ created_by text REFERENCES accounts(id) ON DELETE SET NULL,
17
+ created_at timestamptz NOT NULL DEFAULT now()
18
+ );
19
+
20
+ -- 每次成功刷新整体替换某个来源的条目(只供企业管理员浏览;引入时才物化为目录条目)。entry = 清单条目(已校验)。
21
+ CREATE TABLE IF NOT EXISTS catalog_entries (
22
+ source_id text NOT NULL REFERENCES catalog_sources(id) ON DELETE CASCADE,
23
+ kind text NOT NULL CHECK (kind IN ('plugin', 'connector-template', 'skill', 'app')),
24
+ name text NOT NULL,
25
+ npm text NOT NULL,
26
+ entry jsonb NOT NULL,
27
+ updated_at timestamptz NOT NULL DEFAULT now(),
28
+ PRIMARY KEY (source_id, kind, name)
29
+ );
30
+
31
+ -- 从清单引入的目录条目记下来源清单(来源删除后置空,条目保留)。
32
+ ALTER TABLE directory_items
33
+ ADD COLUMN IF NOT EXISTS catalog_source_id text REFERENCES catalog_sources(id) ON DELETE SET NULL;
34
+
35
+ -- 版本来源增加 catalog(source_ref = <sourceId>:<npm>@<version>,integrity = 清单的 sha512)。
36
+ -- 约束名为 PG 对 0034 内联 CHECK 的默认命名。
37
+ ALTER TABLE directory_item_versions
38
+ DROP CONSTRAINT IF EXISTS directory_item_versions_source_check;
39
+ ALTER TABLE directory_item_versions
40
+ ADD CONSTRAINT directory_item_versions_source_check CHECK (source IN ('file', 'npm', 'catalog'));
@@ -0,0 +1,17 @@
1
+ -- M6 T25:应用包(app.yaml)企业导入的暂存(C31)。prepare 校验完整个应用包(全部插件按 lock 下载并按 sha512
2
+ -- 校验、模板、技能)后写一行,confirm 按 reviewHash 一次批准并删除该行;24 小时过期,由维护任务
3
+ -- app-staging-cleanup 删除过期行与 object_prefix 下的对象(插件包留在内容寻址的 plugin_packages)。
4
+ -- review:给企业管理员看的审阅(AppReview);bundle:确认时要用的解析结果(清单、文件、npm 包名、预定的条目 id、
5
+ -- 包大小);source:{ kind: file | npm | catalog, ref, integrity?, catalogSourceId? }。
6
+ -- object_prefix:技能文件、图标与 app.yaml 在对象存储 deployment/<object_prefix><path>,确认后由版本行接管。
7
+ CREATE TABLE IF NOT EXISTS app_import_staging (
8
+ id uuid PRIMARY KEY,
9
+ review jsonb NOT NULL,
10
+ bundle jsonb NOT NULL,
11
+ object_prefix text,
12
+ source jsonb NOT NULL,
13
+ created_by text REFERENCES accounts(id) ON DELETE CASCADE,
14
+ created_at timestamptz NOT NULL DEFAULT now(),
15
+ expires_at timestamptz NOT NULL
16
+ );
17
+ CREATE INDEX IF NOT EXISTS app_import_staging_expires_idx ON app_import_staging (expires_at);
@@ -0,0 +1,92 @@
1
+ -- M6 T26:组织从企业目录安装(C22 / C31)、成员申请与审批。
2
+ -- directory_requests:成员申请(stage org,进组织管理员收件箱)与需审批条目的部署级申请(stage deployment,
3
+ -- 企业管理员决定)。同一组织、同一条目只能有一个 pending 申请(F-AF 部分唯一索引)。
4
+ CREATE TABLE IF NOT EXISTS directory_requests (
5
+ id uuid PRIMARY KEY,
6
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
7
+ item_id uuid NOT NULL REFERENCES directory_items(id) ON DELETE CASCADE,
8
+ version text,
9
+ stage text NOT NULL CHECK (stage IN ('org', 'deployment')),
10
+ requested_by text REFERENCES accounts(id) ON DELETE SET NULL,
11
+ note text NOT NULL DEFAULT '',
12
+ status text NOT NULL DEFAULT 'pending'
13
+ CHECK (status IN ('pending', 'approved', 'rejected', 'cancelled')),
14
+ decided_by text REFERENCES accounts(id) ON DELETE SET NULL,
15
+ decided_at timestamptz,
16
+ -- 组织管理员批准后升级到 stage deployment 时记下批准人与时间(最终决定人仍记 decided_by)
17
+ org_decided_by text REFERENCES accounts(id) ON DELETE SET NULL,
18
+ org_decided_at timestamptz,
19
+ created_at timestamptz NOT NULL DEFAULT now()
20
+ );
21
+ CREATE UNIQUE INDEX IF NOT EXISTS directory_requests_pending_uq
22
+ ON directory_requests (org_id, item_id)
23
+ WHERE status = 'pending';
24
+ CREATE INDEX IF NOT EXISTS directory_requests_stage_idx
25
+ ON directory_requests (stage, status, created_at);
26
+
27
+ -- 企业管理员批准某组织安装 needs_approval 条目(跨版本有效)。
28
+ CREATE TABLE IF NOT EXISTS directory_org_grants (
29
+ item_id uuid NOT NULL REFERENCES directory_items(id) ON DELETE CASCADE,
30
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
31
+ granted_by text REFERENCES accounts(id) ON DELETE SET NULL,
32
+ granted_at timestamptz NOT NULL DEFAULT now(),
33
+ PRIMARY KEY (item_id, org_id)
34
+ );
35
+
36
+ -- 应用在组织里的安装(C31):失败的安装留行(status failed,error 只含步骤与错误码),可以重新安装。
37
+ CREATE TABLE IF NOT EXISTS app_installs (
38
+ id uuid PRIMARY KEY,
39
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
40
+ item_id uuid NOT NULL REFERENCES directory_items(id) ON DELETE RESTRICT,
41
+ version text NOT NULL,
42
+ status text NOT NULL CHECK (status IN ('installing', 'installed', 'failed', 'uninstalling')),
43
+ installed_by text REFERENCES accounts(id) ON DELETE SET NULL,
44
+ installed_at timestamptz NOT NULL DEFAULT now(),
45
+ error jsonb
46
+ );
47
+ CREATE UNIQUE INDEX IF NOT EXISTS app_installs_live_uq
48
+ ON app_installs (org_id, item_id)
49
+ WHERE status <> 'failed';
50
+
51
+ -- 应用安装的组件:created = 本次安装新建(false = 之前已存在);技能新增版本时记 skill_version。
52
+ CREATE TABLE IF NOT EXISTS app_install_components (
53
+ install_id uuid NOT NULL REFERENCES app_installs(id) ON DELETE CASCADE,
54
+ kind text NOT NULL CHECK (kind IN ('plugin', 'connector', 'skill')),
55
+ ref text NOT NULL,
56
+ created boolean NOT NULL,
57
+ skill_version integer,
58
+ PRIMARY KEY (install_id, kind, ref)
59
+ );
60
+
61
+ -- 从目录安装的连接器 / 技能记下来源条目与版本(应用的组件记应用条目)。
62
+ ALTER TABLE connectors ADD COLUMN IF NOT EXISTS directory_item_id uuid
63
+ REFERENCES directory_items(id) ON DELETE SET NULL;
64
+ ALTER TABLE connectors ADD COLUMN IF NOT EXISTS directory_version text;
65
+ -- 模板的 defaultToolPolicies:授权码连接器安装时没有工具快照,首个快照时按它设默认策略(policy_source 'template')
66
+ ALTER TABLE connectors ADD COLUMN IF NOT EXISTS template_tool_policies jsonb;
67
+ ALTER TABLE skills ADD COLUMN IF NOT EXISTS directory_item_id uuid
68
+ REFERENCES directory_items(id) ON DELETE SET NULL;
69
+ ALTER TABLE skills ADD COLUMN IF NOT EXISTS directory_version text;
70
+ -- 每个技能版本记自己的来源(自定义上传为 NULL):退回版本时技能的来源跟着退回
71
+ ALTER TABLE skill_versions ADD COLUMN IF NOT EXISTS directory_item_id uuid
72
+ REFERENCES directory_items(id) ON DELETE SET NULL;
73
+ ALTER TABLE skill_versions ADD COLUMN IF NOT EXISTS directory_version text;
74
+
75
+ -- 把插件带进部署的全部目录条目(插件条目装到部署、应用包确认时 install / upgrade 的插件)。同一插件可以有多个
76
+ -- 来源;组织直接启用(不经某个条目安装)时按全部来源的策略判定,最严格的生效(C22)。不经目录安装的插件没有行;
77
+ -- 插件从部署卸载(删安装记录)时同一事务删掉它的行,之后不经目录重装不受旧条目约束。
78
+ CREATE TABLE IF NOT EXISTS plugin_directory_sources (
79
+ plugin text NOT NULL,
80
+ item_id uuid NOT NULL REFERENCES directory_items(id) ON DELETE CASCADE,
81
+ created_at timestamptz NOT NULL DEFAULT now(),
82
+ PRIMARY KEY (plugin, item_id)
83
+ );
84
+ INSERT INTO plugin_directory_sources (plugin, item_id)
85
+ SELECT name, directory_item_id FROM plugin_installs WHERE directory_item_id IS NOT NULL
86
+ ON CONFLICT DO NOTHING;
87
+
88
+ -- F-Z:模板安装的默认策略记 policy_source 'template'(约束名改名后不变)。
89
+ ALTER TABLE connector_tools DROP CONSTRAINT IF EXISTS app_tools_policy_source_check;
90
+ ALTER TABLE connector_tools DROP CONSTRAINT IF EXISTS connector_tools_policy_source_check;
91
+ ALTER TABLE connector_tools ADD CONSTRAINT connector_tools_policy_source_check
92
+ CHECK (policy_source IN ('derived', 'admin', 'template'));
@@ -0,0 +1,6 @@
1
+ -- M7 T4 (E11-D): per-connection inbound mode. 'long_connection' (default) is held by a gateway
2
+ -- replica's supervisor; 'webhook' receives platform callbacks on the gateway route
3
+ -- POST /channels/webhook/<id> and is skipped by the supervisor scan.
4
+ ALTER TABLE channel_connections
5
+ ADD COLUMN IF NOT EXISTS inbound_mode text NOT NULL DEFAULT 'long_connection'
6
+ CHECK (inbound_mode IN ('long_connection', 'webhook'));
@@ -0,0 +1,8 @@
1
+ -- M7 T5a: outbound delivery records an approval / question card before sending it, so a click on a
2
+ -- card that is already visible on the platform is accepted (Ruling A13 finds the row). The row is
3
+ -- 'pending' with no message_id until the send returns; the transaction that advances
4
+ -- channel_deliveries.last_seq fills message_id and sets 'sent'. Existing rows were all sent.
5
+ ALTER TABLE channel_card_messages ALTER COLUMN message_id DROP NOT NULL;
6
+ ALTER TABLE channel_card_messages
7
+ ADD COLUMN IF NOT EXISTS status text NOT NULL DEFAULT 'sent'
8
+ CHECK (status IN ('pending', 'sent'));
@@ -0,0 +1,10 @@
1
+ -- M7 T16 (Ruling R13): the usage.report sweeper re-enqueues recent `usage` events so a delivery is
2
+ -- never lost when the fast-path enqueue fails. It scans by created_at; the partial index keeps that
3
+ -- cheap. The single-row table holds the sweep watermark (advanced by the maintenance job).
4
+ CREATE INDEX IF NOT EXISTS conversation_events_usage_idx
5
+ ON conversation_events (created_at) WHERE type = 'usage';
6
+ CREATE TABLE IF NOT EXISTS usage_report_sweep (
7
+ id smallint PRIMARY KEY DEFAULT 1 CHECK (id = 1),
8
+ watermark timestamptz NOT NULL,
9
+ updated_at timestamptz NOT NULL DEFAULT now()
10
+ );
@@ -0,0 +1,38 @@
1
+ -- Phase 0a terminology: the kernel's plugin domain becomes the extension domain. The nine plugin_*
2
+ -- tables are renamed to extension_* (plugin_directory_sources -> extension_catalog_sources); the
3
+ -- `plugin` text columns keep their name (the value is the extension's name). Index, FK and PK names
4
+ -- are not renamed (as in 0033). The package / install `source` value 'directory' becomes 'catalog'.
5
+ -- PG schemas plugin_<name> are not touched. No compatibility views (nothing is released yet).
6
+
7
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
8
+ ALTER TABLE IF EXISTS plugin_packages RENAME TO extension_packages;
9
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
10
+ ALTER TABLE IF EXISTS plugin_blobs RENAME TO extension_blobs;
11
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
12
+ ALTER TABLE IF EXISTS plugin_installs RENAME TO extension_installs;
13
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
14
+ ALTER TABLE IF EXISTS plugin_name_owners RENAME TO extension_name_owners;
15
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
16
+ ALTER TABLE IF EXISTS plugin_replica_status RENAME TO extension_replica_status;
17
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
18
+ ALTER TABLE IF EXISTS plugin_permission_snapshots RENAME TO extension_permission_snapshots;
19
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
20
+ ALTER TABLE IF EXISTS plugin_org_configs RENAME TO extension_org_configs;
21
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
22
+ ALTER TABLE IF EXISTS plugin_deployment_configs RENAME TO extension_deployment_configs;
23
+ -- capybara:allow-destructive table rename; code is renamed in the same release (project not released, no compatibility layer)
24
+ ALTER TABLE IF EXISTS plugin_directory_sources RENAME TO extension_catalog_sources;
25
+
26
+ -- source 'directory' -> 'catalog': drop the CHECK (under its 0030 name, or ours on a second run),
27
+ -- rewrite the rows, add it back. The whole file runs in one transaction, so this is repeatable.
28
+ ALTER TABLE extension_packages DROP CONSTRAINT IF EXISTS plugin_packages_source_check;
29
+ ALTER TABLE extension_packages DROP CONSTRAINT IF EXISTS extension_packages_source_check;
30
+ UPDATE extension_packages SET source = 'catalog' WHERE source = 'directory';
31
+ ALTER TABLE extension_packages ADD CONSTRAINT extension_packages_source_check
32
+ CHECK (source IN ('npm', 'file', 'catalog'));
33
+
34
+ ALTER TABLE extension_installs DROP CONSTRAINT IF EXISTS plugin_installs_source_check;
35
+ ALTER TABLE extension_installs DROP CONSTRAINT IF EXISTS extension_installs_source_check;
36
+ UPDATE extension_installs SET source = 'catalog' WHERE source = 'directory';
37
+ ALTER TABLE extension_installs ADD CONSTRAINT extension_installs_source_check
38
+ CHECK (source IN ('npm', 'file', 'catalog'));