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

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 (631) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +20 -2
  4. package/bootstrap.json +22 -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 +1125 -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 +223 -0
  112. package/dist/config/schema.js +1151 -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 +422 -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 +150 -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 +210 -0
  166. package/dist/errors.js +212 -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 +789 -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 +149 -0
  210. package/dist/extensions/bootstrap.js +441 -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 +170 -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 +67 -0
  318. package/dist/index.js +65 -0
  319. package/dist/kernel.d.ts +256 -0
  320. package/dist/kernel.js +1326 -0
  321. package/dist/log.d.ts +48 -0
  322. package/dist/log.js +229 -0
  323. package/dist/models/prices.d.ts +53 -0
  324. package/dist/models/prices.js +121 -0
  325. package/dist/models/purposes.controller.d.ts +19 -0
  326. package/dist/models/purposes.controller.js +56 -0
  327. package/dist/models/purposes.d.ts +140 -0
  328. package/dist/models/purposes.js +267 -0
  329. package/dist/net/proxy.d.ts +44 -0
  330. package/dist/net/proxy.js +162 -0
  331. package/dist/net/public-address.d.ts +60 -0
  332. package/dist/net/public-address.js +271 -0
  333. package/dist/net/safe-fetch.d.ts +38 -0
  334. package/dist/net/safe-fetch.js +140 -0
  335. package/dist/orgs/directory-sync.controller.d.ts +14 -0
  336. package/dist/orgs/directory-sync.controller.js +40 -0
  337. package/dist/orgs/directory-sync.d.ts +166 -0
  338. package/dist/orgs/directory-sync.js +558 -0
  339. package/dist/orgs/invitations.controller.d.ts +58 -0
  340. package/dist/orgs/invitations.controller.js +137 -0
  341. package/dist/orgs/invitations.service.d.ts +80 -0
  342. package/dist/orgs/invitations.service.js +217 -0
  343. package/dist/orgs/members.service.d.ts +63 -0
  344. package/dist/orgs/members.service.js +234 -0
  345. package/dist/orgs/offboarding.d.ts +141 -0
  346. package/dist/orgs/offboarding.js +398 -0
  347. package/dist/orgs/org-lock.d.ts +32 -0
  348. package/dist/orgs/org-lock.js +46 -0
  349. package/dist/orgs/org.guard.d.ts +35 -0
  350. package/dist/orgs/org.guard.js +95 -0
  351. package/dist/orgs/orgs.controller.d.ts +78 -0
  352. package/dist/orgs/orgs.controller.js +192 -0
  353. package/dist/orgs/orgs.service.d.ts +61 -0
  354. package/dist/orgs/orgs.service.js +209 -0
  355. package/dist/orgs/roles.d.ts +13 -0
  356. package/dist/orgs/roles.js +58 -0
  357. package/dist/orgs/settings.controller.d.ts +20 -0
  358. package/dist/orgs/settings.controller.js +53 -0
  359. package/dist/orgs/settings.service.d.ts +120 -0
  360. package/dist/orgs/settings.service.js +178 -0
  361. package/dist/packages/npm.d.ts +50 -0
  362. package/dist/packages/npm.js +218 -0
  363. package/dist/packages/provenance.d.ts +47 -0
  364. package/dist/packages/provenance.js +147 -0
  365. package/dist/packages/tgz.d.ts +76 -0
  366. package/dist/packages/tgz.js +225 -0
  367. package/dist/runtime/abort.d.ts +32 -0
  368. package/dist/runtime/abort.js +71 -0
  369. package/dist/runtime/checkpointer.d.ts +32 -0
  370. package/dist/runtime/checkpointer.js +243 -0
  371. package/dist/runtime/context/build.d.ts +254 -0
  372. package/dist/runtime/context/build.js +693 -0
  373. package/dist/runtime/context/claude-tools.d.ts +11 -0
  374. package/dist/runtime/context/claude-tools.js +24 -0
  375. package/dist/runtime/context/compaction.d.ts +26 -0
  376. package/dist/runtime/context/compaction.js +195 -0
  377. package/dist/runtime/context/pairing.d.ts +11 -0
  378. package/dist/runtime/context/pairing.js +82 -0
  379. package/dist/runtime/context/reminders.d.ts +5 -0
  380. package/dist/runtime/context/reminders.js +11 -0
  381. package/dist/runtime/context/skills.d.ts +105 -0
  382. package/dist/runtime/context/skills.js +283 -0
  383. package/dist/runtime/context/tokens.d.ts +19 -0
  384. package/dist/runtime/context/tokens.js +104 -0
  385. package/dist/runtime/conversation-lock.d.ts +40 -0
  386. package/dist/runtime/conversation-lock.js +97 -0
  387. package/dist/runtime/hook-calls.d.ts +84 -0
  388. package/dist/runtime/hook-calls.js +136 -0
  389. package/dist/runtime/langgraph-loop.d.ts +52 -0
  390. package/dist/runtime/langgraph-loop.js +247 -0
  391. package/dist/runtime/loop.d.ts +93 -0
  392. package/dist/runtime/loop.js +7 -0
  393. package/dist/runtime/maintenance.d.ts +80 -0
  394. package/dist/runtime/maintenance.js +147 -0
  395. package/dist/runtime/media-cache.d.ts +21 -0
  396. package/dist/runtime/media-cache.js +51 -0
  397. package/dist/runtime/model-call.d.ts +176 -0
  398. package/dist/runtime/model-call.js +1049 -0
  399. package/dist/runtime/providers.d.ts +86 -0
  400. package/dist/runtime/providers.js +224 -0
  401. package/dist/runtime/quota.d.ts +29 -0
  402. package/dist/runtime/quota.js +70 -0
  403. package/dist/runtime/run-finish.d.ts +45 -0
  404. package/dist/runtime/run-finish.js +69 -0
  405. package/dist/runtime/run-queue.d.ts +121 -0
  406. package/dist/runtime/run-queue.js +493 -0
  407. package/dist/runtime/run-worker.d.ts +138 -0
  408. package/dist/runtime/run-worker.js +805 -0
  409. package/dist/runtime/stream.controller.d.ts +34 -0
  410. package/dist/runtime/stream.controller.js +122 -0
  411. package/dist/runtime/stream.d.ts +63 -0
  412. package/dist/runtime/stream.js +262 -0
  413. package/dist/runtime/subagents/child.d.ts +80 -0
  414. package/dist/runtime/subagents/child.js +225 -0
  415. package/dist/runtime/subagents/definition.d.ts +103 -0
  416. package/dist/runtime/subagents/definition.js +392 -0
  417. package/dist/runtime/subagents/dispatch.d.ts +69 -0
  418. package/dist/runtime/subagents/dispatch.js +502 -0
  419. package/dist/runtime/subagents/limits.d.ts +23 -0
  420. package/dist/runtime/subagents/limits.js +34 -0
  421. package/dist/runtime/subagents/org-agents.d.ts +50 -0
  422. package/dist/runtime/subagents/org-agents.js +70 -0
  423. package/dist/runtime/subagents/preamble.d.ts +7 -0
  424. package/dist/runtime/subagents/preamble.js +11 -0
  425. package/dist/runtime/subagents/progress.d.ts +26 -0
  426. package/dist/runtime/subagents/progress.js +36 -0
  427. package/dist/runtime/subagents/roster.d.ts +55 -0
  428. package/dist/runtime/subagents/roster.js +111 -0
  429. package/dist/runtime/subagents/skill-fork.d.ts +123 -0
  430. package/dist/runtime/subagents/skill-fork.js +259 -0
  431. package/dist/runtime/usage-report.d.ts +163 -0
  432. package/dist/runtime/usage-report.js +550 -0
  433. package/dist/runtime/waits.d.ts +233 -0
  434. package/dist/runtime/waits.js +883 -0
  435. package/dist/sandbox/leases.d.ts +169 -0
  436. package/dist/sandbox/leases.js +515 -0
  437. package/dist/sandbox/lifecycle.d.ts +21 -0
  438. package/dist/sandbox/lifecycle.js +68 -0
  439. package/dist/sandbox/sandbox.service.d.ts +249 -0
  440. package/dist/sandbox/sandbox.service.js +908 -0
  441. package/dist/skills/catalog.d.ts +149 -0
  442. package/dist/skills/catalog.js +405 -0
  443. package/dist/skills/changes.controller.d.ts +56 -0
  444. package/dist/skills/changes.controller.js +136 -0
  445. package/dist/skills/changes.service.d.ts +175 -0
  446. package/dist/skills/changes.service.js +805 -0
  447. package/dist/skills/invocable.controller.d.ts +23 -0
  448. package/dist/skills/invocable.controller.js +50 -0
  449. package/dist/skills/invocation-keys.d.ts +23 -0
  450. package/dist/skills/invocation-keys.js +44 -0
  451. package/dist/skills/invoke.d.ts +135 -0
  452. package/dist/skills/invoke.js +286 -0
  453. package/dist/skills/package.d.ts +87 -0
  454. package/dist/skills/package.js +227 -0
  455. package/dist/skills/skills.controller.d.ts +40 -0
  456. package/dist/skills/skills.controller.js +110 -0
  457. package/dist/skills/skills.service.d.ts +192 -0
  458. package/dist/skills/skills.service.js +567 -0
  459. package/dist/storage/prefix.d.ts +36 -0
  460. package/dist/storage/prefix.js +104 -0
  461. package/dist/storage/purge.d.ts +27 -0
  462. package/dist/storage/purge.js +75 -0
  463. package/dist/storage/storage.service.d.ts +44 -0
  464. package/dist/storage/storage.service.js +145 -0
  465. package/dist/text.d.ts +13 -0
  466. package/dist/text.js +13 -0
  467. package/dist/tools/approvals.controller.d.ts +53 -0
  468. package/dist/tools/approvals.controller.js +128 -0
  469. package/dist/tools/approvals.service.d.ts +172 -0
  470. package/dist/tools/approvals.service.js +568 -0
  471. package/dist/tools/breaker.d.ts +28 -0
  472. package/dist/tools/breaker.js +72 -0
  473. package/dist/tools/builtins/agent.d.ts +81 -0
  474. package/dist/tools/builtins/agent.js +223 -0
  475. package/dist/tools/builtins/ask-user.d.ts +28 -0
  476. package/dist/tools/builtins/ask-user.js +139 -0
  477. package/dist/tools/builtins/read-tool-output.d.ts +18 -0
  478. package/dist/tools/builtins/read-tool-output.js +108 -0
  479. package/dist/tools/builtins/sandbox/bash.d.ts +16 -0
  480. package/dist/tools/builtins/sandbox/bash.js +137 -0
  481. package/dist/tools/builtins/sandbox/common.d.ts +114 -0
  482. package/dist/tools/builtins/sandbox/common.js +304 -0
  483. package/dist/tools/builtins/sandbox/deliver.d.ts +5 -0
  484. package/dist/tools/builtins/sandbox/deliver.js +180 -0
  485. package/dist/tools/builtins/sandbox/edit.d.ts +4 -0
  486. package/dist/tools/builtins/sandbox/edit.js +98 -0
  487. package/dist/tools/builtins/sandbox/glob-match.d.ts +25 -0
  488. package/dist/tools/builtins/sandbox/glob-match.js +240 -0
  489. package/dist/tools/builtins/sandbox/glob.d.ts +4 -0
  490. package/dist/tools/builtins/sandbox/glob.js +104 -0
  491. package/dist/tools/builtins/sandbox/grep.d.ts +9 -0
  492. package/dist/tools/builtins/sandbox/grep.js +133 -0
  493. package/dist/tools/builtins/sandbox/index.d.ts +12 -0
  494. package/dist/tools/builtins/sandbox/index.js +27 -0
  495. package/dist/tools/builtins/sandbox/names.d.ts +7 -0
  496. package/dist/tools/builtins/sandbox/names.js +20 -0
  497. package/dist/tools/builtins/sandbox/read.d.ts +8 -0
  498. package/dist/tools/builtins/sandbox/read.js +121 -0
  499. package/dist/tools/builtins/sandbox/write.d.ts +4 -0
  500. package/dist/tools/builtins/sandbox/write.js +88 -0
  501. package/dist/tools/builtins/skill-load.d.ts +53 -0
  502. package/dist/tools/builtins/skill-load.js +446 -0
  503. package/dist/tools/builtins/skill-write.d.ts +59 -0
  504. package/dist/tools/builtins/skill-write.js +244 -0
  505. package/dist/tools/builtins/tool-search.d.ts +31 -0
  506. package/dist/tools/builtins/tool-search.js +171 -0
  507. package/dist/tools/connector-content.controller.d.ts +34 -0
  508. package/dist/tools/connector-content.controller.js +78 -0
  509. package/dist/tools/connector-content.d.ts +104 -0
  510. package/dist/tools/connector-content.js +267 -0
  511. package/dist/tools/connectors.controller.d.ts +210 -0
  512. package/dist/tools/connectors.controller.js +234 -0
  513. package/dist/tools/connectors.service.d.ts +303 -0
  514. package/dist/tools/connectors.service.js +1102 -0
  515. package/dist/tools/credentials.d.ts +139 -0
  516. package/dist/tools/credentials.js +351 -0
  517. package/dist/tools/drift.d.ts +141 -0
  518. package/dist/tools/drift.js +539 -0
  519. package/dist/tools/elicitation.d.ts +81 -0
  520. package/dist/tools/elicitation.js +266 -0
  521. package/dist/tools/endpoint.d.ts +18 -0
  522. package/dist/tools/endpoint.js +115 -0
  523. package/dist/tools/info.d.ts +67 -0
  524. package/dist/tools/info.js +113 -0
  525. package/dist/tools/naming.d.ts +27 -0
  526. package/dist/tools/naming.js +47 -0
  527. package/dist/tools/oauth/discovery.d.ts +65 -0
  528. package/dist/tools/oauth/discovery.js +307 -0
  529. package/dist/tools/oauth/flow.d.ts +63 -0
  530. package/dist/tools/oauth/flow.js +237 -0
  531. package/dist/tools/oauth/oauth.controller.d.ts +31 -0
  532. package/dist/tools/oauth/oauth.controller.js +95 -0
  533. package/dist/tools/oauth/tokens.d.ts +111 -0
  534. package/dist/tools/oauth/tokens.js +258 -0
  535. package/dist/tools/outputs.d.ts +61 -0
  536. package/dist/tools/outputs.js +156 -0
  537. package/dist/tools/pipeline.d.ts +322 -0
  538. package/dist/tools/pipeline.js +1236 -0
  539. package/dist/tools/policy.d.ts +60 -0
  540. package/dist/tools/policy.js +236 -0
  541. package/dist/tools/questions.controller.d.ts +24 -0
  542. package/dist/tools/questions.controller.js +58 -0
  543. package/dist/tools/questions.service.d.ts +103 -0
  544. package/dist/tools/questions.service.js +295 -0
  545. package/dist/tools/redact.d.ts +20 -0
  546. package/dist/tools/redact.js +60 -0
  547. package/dist/tools/registry.d.ts +246 -0
  548. package/dist/tools/registry.js +481 -0
  549. package/dist/tools/resources.d.ts +16 -0
  550. package/dist/tools/resources.js +76 -0
  551. package/dist/tools/specs.d.ts +14 -0
  552. package/dist/tools/specs.js +31 -0
  553. package/dist/tools/validate.d.ts +20 -0
  554. package/dist/tools/validate.js +183 -0
  555. package/dist/tools/view.d.ts +43 -0
  556. package/dist/tools/view.js +225 -0
  557. package/dist/ui/embed-token.d.ts +31 -0
  558. package/dist/ui/embed-token.js +132 -0
  559. package/dist/ui/registry.d.ts +58 -0
  560. package/dist/ui/registry.js +90 -0
  561. package/dist/ui/ui-stream.d.ts +37 -0
  562. package/dist/ui/ui-stream.js +162 -0
  563. package/dist/ui/views.controller.d.ts +81 -0
  564. package/dist/ui/views.controller.js +261 -0
  565. package/dist/ui/views.d.ts +155 -0
  566. package/dist/ui/views.js +306 -0
  567. package/dist/version.d.ts +5 -0
  568. package/dist/version.js +6 -0
  569. package/package.json +67 -3
  570. package/src/migrations/0001_init.sql +8 -0
  571. package/src/migrations/0002_secrets.sql +8 -0
  572. package/src/migrations/0003_identity.sql +117 -0
  573. package/src/migrations/0004_plugin_org_config_nullable.sql +3 -0
  574. package/src/migrations/0005_agents.sql +27 -0
  575. package/src/migrations/0006_conversations.sql +37 -0
  576. package/src/migrations/0007_checkpoints.sql +26 -0
  577. package/src/migrations/0008_runs_trigger_seq.sql +3 -0
  578. package/src/migrations/0009_runs_active_unique.sql +4 -0
  579. package/src/migrations/0010_tools.sql +125 -0
  580. package/src/migrations/0011_approvals_spec.sql +10 -0
  581. package/src/migrations/0012_run_waits.sql +24 -0
  582. package/src/migrations/0013_app_tools_source.sql +4 -0
  583. package/src/migrations/0014_tool_specs.sql +8 -0
  584. package/src/migrations/0015_tool_drift.sql +20 -0
  585. package/src/migrations/0016_plugin_permissions.sql +11 -0
  586. package/src/migrations/0017_identity_sources.sql +6 -0
  587. package/src/migrations/0018_channels.sql +74 -0
  588. package/src/migrations/0019_identity_trust.sql +17 -0
  589. package/src/migrations/0020_channel_card_lookup.sql +10 -0
  590. package/src/migrations/0021_org_storage_purge.sql +9 -0
  591. package/src/migrations/0022_attachments.sql +29 -0
  592. package/src/migrations/0023_sandboxes.sql +37 -0
  593. package/src/migrations/0024_skills.sql +46 -0
  594. package/src/migrations/0025_skills_catalog_idx.sql +6 -0
  595. package/src/migrations/0026_skill_changes.sql +34 -0
  596. package/src/migrations/0027_model_prices.sql +18 -0
  597. package/src/migrations/0028_evals.sql +105 -0
  598. package/src/migrations/0029_model_purposes.sql +18 -0
  599. package/src/migrations/0030_plugin_installs.sql +73 -0
  600. package/src/migrations/0031_plugin_snapshot_source.sql +6 -0
  601. package/src/migrations/0032_plugin_deployment_configs.sql +10 -0
  602. package/src/migrations/0033_rename_apps_to_connectors.sql +25 -0
  603. package/src/migrations/0034_directory.sql +49 -0
  604. package/src/migrations/0035_catalogs.sql +40 -0
  605. package/src/migrations/0036_app_import_staging.sql +17 -0
  606. package/src/migrations/0037_directory_installs.sql +92 -0
  607. package/src/migrations/0038_channel_inbound_mode.sql +6 -0
  608. package/src/migrations/0039_channel_card_pending.sql +8 -0
  609. package/src/migrations/0040_usage_report_sweep.sql +10 -0
  610. package/src/migrations/0041_rename_plugins_to_extensions.sql +38 -0
  611. package/src/migrations/0042_rename_directory_to_catalog.sql +80 -0
  612. package/src/migrations/0043_rename_app_installs_to_plugin_installs.sql +20 -0
  613. package/src/migrations/0044_catalog_one_kind.sql +90 -0
  614. package/src/migrations/0045_plugin_dependencies.sql +9 -0
  615. package/src/migrations/0046_git_sources.sql +25 -0
  616. package/src/migrations/0047_marketplace_entry_heads.sql +7 -0
  617. package/src/migrations/0048_marketplace_entry_trees.sql +8 -0
  618. package/src/migrations/0049_plugin_upgrades.sql +37 -0
  619. package/src/migrations/0050_bootstrap.sql +53 -0
  620. package/src/migrations/0051_claude_compat.sql +26 -0
  621. package/src/migrations/0052_conversations_account_agent_idx.sql +5 -0
  622. package/src/migrations/0053_subagents.sql +73 -0
  623. package/src/migrations/0054_subagent_wait_expiry.sql +7 -0
  624. package/src/migrations/0055_subagent_parent_indexes.sql +10 -0
  625. package/src/migrations/0056_approval_reason.sql +3 -0
  626. package/src/migrations/0057_conversation_titles.sql +11 -0
  627. package/src/migrations/0058_conversation_selection.sql +4 -0
  628. package/src/migrations/0059_conversation_queue.sql +22 -0
  629. package/src/migrations/0060_file_previewers.sql +10 -0
  630. package/src/migrations/0061_queue_selection.sql +5 -0
  631. package/src/migrations/0062_queued_skill.sql +8 -0
@@ -0,0 +1,173 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { canonicalJson } from "../tools/registry.js";
3
+ const baseQuery = (db, orgId) => db
4
+ .selectFrom("agent_templates as t")
5
+ .innerJoin("agent_template_versions as v", (j) => j.onRef("v.template_id", "=", "t.id").onRef("v.version", "=", "t.current_version"))
6
+ .select([
7
+ "t.id",
8
+ "t.name",
9
+ "t.plugin_name",
10
+ "t.current_version",
11
+ "t.catalog_item_id",
12
+ "v.definition",
13
+ "v.source_format",
14
+ "v.catalog_version",
15
+ ])
16
+ .where("t.org_id", "=", orgId)
17
+ .where("t.deleted_at", "is", null);
18
+ const rowOf = (r) => ({
19
+ id: r.id,
20
+ name: r.name,
21
+ plugin: r.plugin_name,
22
+ version: r.current_version,
23
+ template: r.definition,
24
+ sourceFormat: r.source_format,
25
+ catalogItemId: r.catalog_item_id,
26
+ catalogVersion: r.catalog_version,
27
+ });
28
+ /** The live templates of `ids` in the org (deleted and foreign ids are left out), by id. */
29
+ export async function loadTemplates(db, orgId, ids) {
30
+ if (ids.length === 0)
31
+ return new Map();
32
+ const rows = await baseQuery(db, orgId)
33
+ .where("t.id", "in", [...ids])
34
+ .execute();
35
+ return new Map(rows.map((r) => [r.id, rowOf(r)]));
36
+ }
37
+ /** Reads the org's agent templates (consumed by the roster, the agent page and Task 19's API). */
38
+ export class AgentTemplatesService {
39
+ db;
40
+ constructor(db) {
41
+ this.db = db;
42
+ }
43
+ /** Every live template of the org, by plugin then name. */
44
+ async listForOrg(orgId) {
45
+ const rows = await baseQuery(this.db, orgId)
46
+ .orderBy("t.plugin_name")
47
+ .orderBy("t.name")
48
+ .execute();
49
+ return rows.map((r) => {
50
+ const t = rowOf(r);
51
+ return {
52
+ id: t.id,
53
+ name: t.name,
54
+ plugin: t.plugin,
55
+ type: `${t.plugin}:${t.name}`,
56
+ description: typeof t.template.description === "string" ? t.template.description : "",
57
+ model: t.template.model ?? "inherit",
58
+ version: t.version,
59
+ sourceFormat: t.sourceFormat,
60
+ catalogItemId: t.catalogItemId,
61
+ catalogVersion: t.catalogVersion,
62
+ };
63
+ });
64
+ }
65
+ /** A live template by id or by `<plugin>:<name>`; null when there is none. */
66
+ async resolve(orgId, ref) {
67
+ const i = ref.indexOf(":");
68
+ let q = baseQuery(this.db, orgId);
69
+ q =
70
+ i < 0
71
+ ? q.where("t.id", "=", ref)
72
+ : q.where("t.plugin_name", "=", ref.slice(0, i)).where("t.name", "=", ref.slice(i + 1));
73
+ const r = await q.executeTakeFirst();
74
+ if (!r)
75
+ return null;
76
+ const t = rowOf(r);
77
+ return { id: t.id, version: t.version, plugin: t.plugin, template: t.template };
78
+ }
79
+ }
80
+ /**
81
+ * Writes `template` as the org's live template `<plugin>:<name>` in the caller's transaction (the
82
+ * caller holds the org row lock): a new template (version 1, `created`), a new version of the live
83
+ * one when its definition differs (`changed`, the version added), or nothing when it is equal.
84
+ */
85
+ export async function putTemplateVersionIn(t, s, template) {
86
+ const live = await t
87
+ .selectFrom("agent_templates as a")
88
+ .innerJoin("agent_template_versions as v", (j) => j.onRef("v.template_id", "=", "a.id").onRef("v.version", "=", "a.current_version"))
89
+ .select(["a.id", "a.current_version", "v.definition"])
90
+ .where("a.org_id", "=", s.orgId)
91
+ .where("a.plugin_name", "=", s.plugin)
92
+ .where("a.name", "=", template.name)
93
+ .where("a.deleted_at", "is", null)
94
+ .forUpdate("a")
95
+ .executeTakeFirst();
96
+ if (live && canonicalJson(live.definition) === canonicalJson(template)) {
97
+ return { id: live.id, version: live.current_version, created: false, changed: false };
98
+ }
99
+ const id = live?.id ?? randomUUID();
100
+ const version = live ? live.current_version + 1 : 1;
101
+ if (!live) {
102
+ await t
103
+ .insertInto("agent_templates")
104
+ .values({
105
+ id,
106
+ org_id: s.orgId,
107
+ name: template.name,
108
+ catalog_item_id: s.catalogItemId,
109
+ plugin_name: s.plugin,
110
+ current_version: 1,
111
+ })
112
+ .execute();
113
+ }
114
+ await t
115
+ .insertInto("agent_template_versions")
116
+ .values({
117
+ template_id: id,
118
+ version,
119
+ definition: JSON.stringify(template),
120
+ source_format: s.sourceFormat,
121
+ catalog_version: s.catalogVersion,
122
+ })
123
+ .execute();
124
+ if (live) {
125
+ await t
126
+ .updateTable("agent_templates")
127
+ .set({ current_version: version, catalog_item_id: s.catalogItemId, updated_at: new Date() })
128
+ .where("id", "=", id)
129
+ .execute();
130
+ }
131
+ return { id, version, created: !live, changed: true };
132
+ }
133
+ /**
134
+ * Undoes `version` of a live template when it is still the current one (an install or upgrade
135
+ * rolled back): the version row goes and the template is back at the version before. Returns
136
+ * whether anything changed.
137
+ */
138
+ export async function revertTemplateVersionIn(t, orgId, id, version) {
139
+ if (version <= 1)
140
+ return false;
141
+ // catalog_item_id is not restored (skills.revertVersionIn does restore its own): a template's
142
+ // versions all come from the one catalog item of its plugin name, so it never changes
143
+ const r = await t
144
+ .updateTable("agent_templates")
145
+ .set({ current_version: version - 1, updated_at: new Date() })
146
+ .where("id", "=", id)
147
+ .where("org_id", "=", orgId)
148
+ .where("current_version", "=", version)
149
+ .where("deleted_at", "is", null)
150
+ .executeTakeFirst();
151
+ if (r.numUpdatedRows === 0n)
152
+ return false;
153
+ await t
154
+ .deleteFrom("agent_template_versions")
155
+ .where("template_id", "=", id)
156
+ .where("version", "=", version)
157
+ .execute();
158
+ return true;
159
+ }
160
+ /**
161
+ * Removes a template (soft delete: sub-agents already started keep their frozen definition, and
162
+ * the roster skips it). Returns whether it was live.
163
+ */
164
+ export async function softDeleteTemplateIn(t, orgId, id) {
165
+ const r = await t
166
+ .updateTable("agent_templates")
167
+ .set({ deleted_at: new Date(), updated_at: new Date() })
168
+ .where("id", "=", id)
169
+ .where("org_id", "=", orgId)
170
+ .where("deleted_at", "is", null)
171
+ .executeTakeFirst();
172
+ return r.numUpdatedRows > 0n;
173
+ }
@@ -0,0 +1,143 @@
1
+ import type { FastifyReply } from "fastify";
2
+ import { z } from "zod";
3
+ import type { AdminExtensionView } from "../extensions/permission-view.js";
4
+ import { type Principal } from "../identity/principal.js";
5
+ import { type CatalogItemDetail, type CatalogItemView, type CatalogService, type PermissionsMismatch } from "./catalog.service.js";
6
+ import type { OrgCatalogService } from "./org-catalog.service.js";
7
+ import type { PluginConfirmResult, PluginImport, PluginReview } from "./plugin-import.js";
8
+ declare const NpmBody: z.ZodObject<{
9
+ package: z.ZodString;
10
+ version: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>;
12
+ declare const GitBody: z.ZodObject<{
13
+ url: z.ZodString;
14
+ ref: z.ZodOptional<z.ZodString>;
15
+ path: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strict>;
17
+ declare const PolicyBody: z.ZodObject<{
18
+ policy: z.ZodEnum<{
19
+ allow: "allow";
20
+ disabled: "disabled";
21
+ needs_approval: "needs_approval";
22
+ }>;
23
+ }, z.core.$strip>;
24
+ declare const InstallBody: z.ZodObject<{
25
+ version: z.ZodString;
26
+ }, z.core.$strip>;
27
+ declare const ConfirmBody: z.ZodObject<{
28
+ reviewHash: z.ZodString;
29
+ deployExtension: z.ZodBoolean;
30
+ pinnedSuggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ }, z.core.$strip>;
32
+ declare const ListQuery: z.ZodObject<{
33
+ includeDeleted: z.ZodOptional<z.ZodEnum<{
34
+ false: "false";
35
+ true: "true";
36
+ }>>;
37
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
38
+ offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
39
+ }, z.core.$strip>;
40
+ /**
41
+ * The enterprise catalog (`/api/v1/admin/catalog/*`, enterprise admins): plugin import (upload / npm
42
+ * prepare, then confirm), the item list and detail, policy, delete, and installing an item's
43
+ * extension on the deployment. Writes re-check the enterprise admin inside the service's lock and are
44
+ * audited.
45
+ */
46
+ export declare class AdminCatalogController {
47
+ private readonly catalog;
48
+ private readonly pluginImport;
49
+ private readonly orgCatalog;
50
+ constructor(catalog: CatalogService, pluginImport: PluginImport, orgCatalog: OrgCatalogService);
51
+ /**
52
+ * Prepares the import of an uploaded plugin (an npm-pack tgz as the raw body,
53
+ * `application/octet-stream`, at most `packages.maxBytes`): reads and checks the whole plugin
54
+ * (extension, skills, connector templates; dependencies resolved for the review), stages it for 24
55
+ * hours and returns one review `{ stagingId, review }`, confirmed with `imports/:stagingId/confirm`.
56
+ * A pre-0.1.0 package -> 422 `catalog.legacy_format`; an invalid plugin -> 422
57
+ * `catalog.invalid_manifest` (details list each problem); version already imported -> 409
58
+ * `catalog.version_exists`; an item with the same name from another npm package -> 409
59
+ * `catalog.name_conflict`; an extension named like a config-declared one -> 409.
60
+ */
61
+ importFile(principal: Principal, req: {
62
+ body?: unknown;
63
+ }): Promise<{
64
+ stagingId: string;
65
+ review: PluginReview;
66
+ }>;
67
+ /**
68
+ * Prepares the import of a plugin from the configured npm registry (`version` may be a version, a
69
+ * dist-tag or a range, default latest; verified by `dist.integrity`), as `import/file`. Download
70
+ * failure -> 502.
71
+ */
72
+ importNpm(principal: Principal, body: z.infer<typeof NpmBody>): Promise<{
73
+ stagingId: string;
74
+ review: PluginReview;
75
+ }>;
76
+ /**
77
+ * Prepares the import of a plugin straight from git (a one-off: no marketplace is created and no
78
+ * updates are tracked): `url` is an https git URL or `owner/repo`, `ref` a branch / tag / commit
79
+ * (default the remote HEAD), `path` the plugin's directory in the repo (default the root). The
80
+ * commit is resolved and recorded with host, repo and path; then as `import/file`. Git failures:
81
+ * 502 `marketplace.git_failed`, 422 `marketplace.git_too_large` / `git_unsupported_entry`, 422
82
+ * `marketplace.private_address` / `marketplace.redirect`.
83
+ */
84
+ importGit(principal: Principal, body: z.infer<typeof GitBody>): Promise<{
85
+ stagingId: string;
86
+ review: PluginReview;
87
+ }>;
88
+ /**
89
+ * A staged import's review `{ stagingId, review, permissionsMismatch? }` (the mismatch only for
90
+ * a marketplace import whose permission summary differs from the package; the web's import page
91
+ * loads `?staging=<id>` with it). Unknown, expired or already confirmed -> 404
92
+ * `plugin.staging_not_found`.
93
+ */
94
+ staged(stagingId: string): Promise<{
95
+ stagingId: string;
96
+ review: PluginReview;
97
+ permissionsMismatch?: PermissionsMismatch;
98
+ }>;
99
+ /**
100
+ * Confirms a staged import: approves the plugin's extension when this import installs it (writes
101
+ * its snapshot) and creates the item or adds the version; with `deployExtension` it installs and
102
+ * enables the plugin's own extension after the commit and returns `{ item, deploy }`, where
103
+ * `deploy` says enabled / failed (+ code); a failed deploy does not make the committed import fail
104
+ * (retry from the extension admin by sha256). A foreseeable failure (a downgrade to a version with
105
+ * unrun migrations) is a 409 `extension.downgrade_unsupported` before anything is written.
106
+ * Staging missing or expired -> 404 `plugin.staging_not_found`; `reviewHash` differs or the
107
+ * extension on the deployment changed -> 409 `plugin.review_stale`. `pinnedSuggestions` (skill
108
+ * names of the review) replaces the plugin's suggested pinning; an unknown name -> 400
109
+ * `validation_failed`.
110
+ */
111
+ confirm(principal: Principal, stagingId: string, body: z.infer<typeof ConfirmBody>): Promise<PluginConfirmResult>;
112
+ /**
113
+ * The item list (`includeDeleted=true` includes deleted items). Paging: `limit` (default 200, at
114
+ * most 1000) and `offset`; `nextOffset` is the next page's offset, null when there is none.
115
+ */
116
+ list(q: z.infer<typeof ListQuery>): Promise<{
117
+ items: CatalogItemView[];
118
+ nextOffset: number | null;
119
+ }>;
120
+ /**
121
+ * 条目详情与各版本,另给出 `hasIcon`(最新版本有图标,`GET items/:id/icon` 可取);不存在 → 404
122
+ * `catalog.item_not_found`。
123
+ */
124
+ get(id: string): Promise<CatalogItemDetail & {
125
+ hasIcon: boolean;
126
+ }>;
127
+ /**
128
+ * The item's icon (disabled items included; same response headers as the org side, see
129
+ * `sendCatalogIcon`). No icon -> 404 `catalog.icon_not_found`.
130
+ */
131
+ icon(id: string, reply: FastifyReply): Promise<void>;
132
+ /** 改策略(allow / needs_approval / disabled)。 */
133
+ setPolicy(principal: Principal, id: string, body: z.infer<typeof PolicyBody>): Promise<CatalogItemView>;
134
+ /** 删除条目(软删除,已安装的组件不受影响)。 */
135
+ remove(principal: Principal, id: string): Promise<void>;
136
+ /**
137
+ * Installs the extension of a version of an item on the deployment (a new install starts disabled;
138
+ * unapproved permissions still need approval). A version without an extension -> 409
139
+ * `catalog.no_extension`.
140
+ */
141
+ installToDeployment(principal: Principal, id: string, body: z.infer<typeof InstallBody>): Promise<AdminExtensionView>;
142
+ }
143
+ export {};
@@ -0,0 +1,245 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Body, Controller, Delete, Get, HttpCode, Inject, Param, Post, Put, Query, Req, Res, } from "@nestjs/common";
11
+ import { z } from "zod";
12
+ import { ApiError } from "../errors.js";
13
+ import { CATALOG, ORG_CATALOG, PLUGIN_IMPORT } from "../http/tokens.js";
14
+ import { ZodPipe } from "../http/zod.pipe.js";
15
+ import { CurrentPrincipal, EnterpriseAdmin, patTokenId, requireUser, } from "../identity/principal.js";
16
+ import { CATALOG_LIST_MAX_LIMIT, } from "./catalog.service.js";
17
+ import { sendCatalogIcon } from "./org-catalog.controller.js";
18
+ const NpmBody = z.object({
19
+ package: z.string().min(1).max(214),
20
+ version: z.string().min(1).max(256).optional(),
21
+ });
22
+ const GitBody = z
23
+ .object({
24
+ url: z.string().min(1).max(2000),
25
+ ref: z.string().min(1).max(256).optional(),
26
+ path: z.string().min(1).max(512).optional(),
27
+ })
28
+ .strict();
29
+ const PolicyBody = z.object({ policy: z.enum(["allow", "needs_approval", "disabled"]) });
30
+ const InstallBody = z.object({ version: z.string().min(1).max(256) });
31
+ const ConfirmBody = z.object({
32
+ reviewHash: z.string().min(1).max(128),
33
+ deployExtension: z.boolean(),
34
+ /** Skill names suggested as pinned (spec §9.1); omitted keeps the plugin's flags. */
35
+ pinnedSuggestions: z.array(z.string().min(1).max(64)).max(50).optional(),
36
+ });
37
+ const ListQuery = z.object({
38
+ includeDeleted: z.enum(["true", "false"]).optional(),
39
+ limit: z.coerce.number().int().min(1).max(CATALOG_LIST_MAX_LIMIT).optional(),
40
+ offset: z.coerce.number().int().min(0).max(1_000_000).optional(),
41
+ });
42
+ const actorOpts = (actor) => {
43
+ const tokenId = patTokenId(actor);
44
+ return tokenId !== undefined ? { actorTokenId: tokenId } : {};
45
+ };
46
+ /**
47
+ * The enterprise catalog (`/api/v1/admin/catalog/*`, enterprise admins): plugin import (upload / npm
48
+ * prepare, then confirm), the item list and detail, policy, delete, and installing an item's
49
+ * extension on the deployment. Writes re-check the enterprise admin inside the service's lock and are
50
+ * audited.
51
+ */
52
+ let AdminCatalogController = class AdminCatalogController {
53
+ catalog;
54
+ pluginImport;
55
+ orgCatalog;
56
+ constructor(catalog, pluginImport, orgCatalog) {
57
+ this.catalog = catalog;
58
+ this.pluginImport = pluginImport;
59
+ this.orgCatalog = orgCatalog;
60
+ }
61
+ /**
62
+ * Prepares the import of an uploaded plugin (an npm-pack tgz as the raw body,
63
+ * `application/octet-stream`, at most `packages.maxBytes`): reads and checks the whole plugin
64
+ * (extension, skills, connector templates; dependencies resolved for the review), stages it for 24
65
+ * hours and returns one review `{ stagingId, review }`, confirmed with `imports/:stagingId/confirm`.
66
+ * A pre-0.1.0 package -> 422 `catalog.legacy_format`; an invalid plugin -> 422
67
+ * `catalog.invalid_manifest` (details list each problem); version already imported -> 409
68
+ * `catalog.version_exists`; an item with the same name from another npm package -> 409
69
+ * `catalog.name_conflict`; an extension named like a config-declared one -> 409.
70
+ */
71
+ async importFile(principal, req) {
72
+ const actor = requireUser(principal);
73
+ const body = req.body;
74
+ if (!Buffer.isBuffer(body) || body.byteLength === 0) {
75
+ throw new ApiError("unsupported_media_type", "Send the plugin package (.tgz) as the request body with content-type application/octet-stream");
76
+ }
77
+ const r = await this.pluginImport.prepare(actor.account.id, new Uint8Array(body.buffer, body.byteOffset, body.byteLength), { kind: "file", ref: "upload" }, actorOpts(actor));
78
+ return { stagingId: r.stagingId, review: r.review };
79
+ }
80
+ /**
81
+ * Prepares the import of a plugin from the configured npm registry (`version` may be a version, a
82
+ * dist-tag or a range, default latest; verified by `dist.integrity`), as `import/file`. Download
83
+ * failure -> 502.
84
+ */
85
+ importNpm(principal, body) {
86
+ const actor = requireUser(principal);
87
+ return this.pluginImport.prepareNpm(actor.account.id, { package: body.package, ...(body.version !== undefined && { version: body.version }) }, actorOpts(actor));
88
+ }
89
+ /**
90
+ * Prepares the import of a plugin straight from git (a one-off: no marketplace is created and no
91
+ * updates are tracked): `url` is an https git URL or `owner/repo`, `ref` a branch / tag / commit
92
+ * (default the remote HEAD), `path` the plugin's directory in the repo (default the root). The
93
+ * commit is resolved and recorded with host, repo and path; then as `import/file`. Git failures:
94
+ * 502 `marketplace.git_failed`, 422 `marketplace.git_too_large` / `git_unsupported_entry`, 422
95
+ * `marketplace.private_address` / `marketplace.redirect`.
96
+ */
97
+ importGit(principal, body) {
98
+ const actor = requireUser(principal);
99
+ return this.catalog.importFromGit(actor.account.id, {
100
+ url: body.url,
101
+ ...(body.ref !== undefined && { ref: body.ref }),
102
+ ...(body.path !== undefined && { path: body.path }),
103
+ }, actorOpts(actor));
104
+ }
105
+ /**
106
+ * A staged import's review `{ stagingId, review, permissionsMismatch? }` (the mismatch only for
107
+ * a marketplace import whose permission summary differs from the package; the web's import page
108
+ * loads `?staging=<id>` with it). Unknown, expired or already confirmed -> 404
109
+ * `plugin.staging_not_found`.
110
+ */
111
+ staged(stagingId) {
112
+ return this.pluginImport.staged(stagingId);
113
+ }
114
+ /**
115
+ * Confirms a staged import: approves the plugin's extension when this import installs it (writes
116
+ * its snapshot) and creates the item or adds the version; with `deployExtension` it installs and
117
+ * enables the plugin's own extension after the commit and returns `{ item, deploy }`, where
118
+ * `deploy` says enabled / failed (+ code); a failed deploy does not make the committed import fail
119
+ * (retry from the extension admin by sha256). A foreseeable failure (a downgrade to a version with
120
+ * unrun migrations) is a 409 `extension.downgrade_unsupported` before anything is written.
121
+ * Staging missing or expired -> 404 `plugin.staging_not_found`; `reviewHash` differs or the
122
+ * extension on the deployment changed -> 409 `plugin.review_stale`. `pinnedSuggestions` (skill
123
+ * names of the review) replaces the plugin's suggested pinning; an unknown name -> 400
124
+ * `validation_failed`.
125
+ */
126
+ confirm(principal, stagingId, body) {
127
+ const actor = requireUser(principal);
128
+ const { pinnedSuggestions, ...rest } = body;
129
+ return this.pluginImport.confirm(actor.account.id, stagingId, { ...rest, ...(pinnedSuggestions !== undefined && { pinnedSuggestions }) }, actorOpts(actor));
130
+ }
131
+ /**
132
+ * The item list (`includeDeleted=true` includes deleted items). Paging: `limit` (default 200, at
133
+ * most 1000) and `offset`; `nextOffset` is the next page's offset, null when there is none.
134
+ */
135
+ list(q) {
136
+ return this.catalog.page({
137
+ includeDeleted: q.includeDeleted === "true",
138
+ ...(q.limit !== undefined && { limit: q.limit }),
139
+ ...(q.offset !== undefined && { offset: q.offset }),
140
+ });
141
+ }
142
+ /**
143
+ * 条目详情与各版本,另给出 `hasIcon`(最新版本有图标,`GET items/:id/icon` 可取);不存在 → 404
144
+ * `catalog.item_not_found`。
145
+ */
146
+ async get(id) {
147
+ const detail = await this.catalog.get(id);
148
+ return { ...detail, hasIcon: await this.orgCatalog.hasIcon(id) };
149
+ }
150
+ /**
151
+ * The item's icon (disabled items included; same response headers as the org side, see
152
+ * `sendCatalogIcon`). No icon -> 404 `catalog.icon_not_found`.
153
+ */
154
+ async icon(id, reply) {
155
+ await sendCatalogIcon(reply, await this.orgCatalog.icon(id, true));
156
+ }
157
+ /** 改策略(allow / needs_approval / disabled)。 */
158
+ setPolicy(principal, id, body) {
159
+ const actor = requireUser(principal);
160
+ return this.catalog.setPolicy(actor.account.id, id, body.policy, actorOpts(actor));
161
+ }
162
+ /** 删除条目(软删除,已安装的组件不受影响)。 */
163
+ async remove(principal, id) {
164
+ const actor = requireUser(principal);
165
+ await this.catalog.remove(actor.account.id, id, actorOpts(actor));
166
+ }
167
+ /**
168
+ * Installs the extension of a version of an item on the deployment (a new install starts disabled;
169
+ * unapproved permissions still need approval). A version without an extension -> 409
170
+ * `catalog.no_extension`.
171
+ */
172
+ installToDeployment(principal, id, body) {
173
+ const actor = requireUser(principal);
174
+ return this.catalog.installToDeployment(actor.account.id, id, body.version, actorOpts(actor));
175
+ }
176
+ };
177
+ __decorate([
178
+ Post("import/file"),
179
+ HttpCode(200),
180
+ __param(0, CurrentPrincipal()),
181
+ __param(1, Req())
182
+ ], AdminCatalogController.prototype, "importFile", null);
183
+ __decorate([
184
+ Post("import/npm"),
185
+ HttpCode(200),
186
+ __param(0, CurrentPrincipal()),
187
+ __param(1, Body(new ZodPipe(NpmBody)))
188
+ ], AdminCatalogController.prototype, "importNpm", null);
189
+ __decorate([
190
+ Post("import/git"),
191
+ HttpCode(200),
192
+ __param(0, CurrentPrincipal()),
193
+ __param(1, Body(new ZodPipe(GitBody)))
194
+ ], AdminCatalogController.prototype, "importGit", null);
195
+ __decorate([
196
+ Get("imports/:stagingId"),
197
+ __param(0, Param("stagingId"))
198
+ ], AdminCatalogController.prototype, "staged", null);
199
+ __decorate([
200
+ Post("imports/:stagingId/confirm"),
201
+ HttpCode(201),
202
+ __param(0, CurrentPrincipal()),
203
+ __param(1, Param("stagingId")),
204
+ __param(2, Body(new ZodPipe(ConfirmBody)))
205
+ ], AdminCatalogController.prototype, "confirm", null);
206
+ __decorate([
207
+ Get("items"),
208
+ __param(0, Query(new ZodPipe(ListQuery)))
209
+ ], AdminCatalogController.prototype, "list", null);
210
+ __decorate([
211
+ Get("items/:id"),
212
+ __param(0, Param("id"))
213
+ ], AdminCatalogController.prototype, "get", null);
214
+ __decorate([
215
+ Get("items/:id/icon"),
216
+ __param(0, Param("id")),
217
+ __param(1, Res())
218
+ ], AdminCatalogController.prototype, "icon", null);
219
+ __decorate([
220
+ Put("items/:id/policy"),
221
+ __param(0, CurrentPrincipal()),
222
+ __param(1, Param("id")),
223
+ __param(2, Body(new ZodPipe(PolicyBody)))
224
+ ], AdminCatalogController.prototype, "setPolicy", null);
225
+ __decorate([
226
+ Delete("items/:id"),
227
+ HttpCode(204),
228
+ __param(0, CurrentPrincipal()),
229
+ __param(1, Param("id"))
230
+ ], AdminCatalogController.prototype, "remove", null);
231
+ __decorate([
232
+ Post("items/:id/install-deployment"),
233
+ HttpCode(200),
234
+ __param(0, CurrentPrincipal()),
235
+ __param(1, Param("id")),
236
+ __param(2, Body(new ZodPipe(InstallBody)))
237
+ ], AdminCatalogController.prototype, "installToDeployment", null);
238
+ AdminCatalogController = __decorate([
239
+ Controller("api/v1/admin/catalog"),
240
+ EnterpriseAdmin(),
241
+ __param(0, Inject(CATALOG)),
242
+ __param(1, Inject(PLUGIN_IMPORT)),
243
+ __param(2, Inject(ORG_CATALOG))
244
+ ], AdminCatalogController);
245
+ export { AdminCatalogController };