@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,253 @@
1
+ import { SDK_VERSION } from "@capybara-hq/plugin-sdk";
2
+ import { ApiError } from "../errors.js";
3
+ import { audit } from "../identity/audit.js";
4
+ import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
5
+ import { fetchNpmPackage, IntegrityMismatchError, NpmFetchError, PackageTooLargeError, } from "../packages/npm.js";
6
+ import { fetchProvenance, PROVENANCE_TIMEOUT_MS, } from "../packages/provenance.js";
7
+ import { ExtensionApprovals } from "./approvals.js";
8
+ import { ExtensionPackageError, extensionPackageApiError, permissionSetOfPackage, readExtensionPackage, } from "./package.js";
9
+ import { diffPermissions } from "./permission-set.js";
10
+ import { migrationWarnings, permissionGroups, permissionKeyItems, reviewHash, } from "./permission-view.js";
11
+ export { migrationWarnings };
12
+ /** 插件安装记录与包的导入(上传文件、npm)。本身无状态,多副本共用。 */
13
+ export class ExtensionInstalls {
14
+ d;
15
+ constructor(d) {
16
+ this.d = d;
17
+ }
18
+ /**
19
+ * Validates and stores one package and returns the review; audits `extension.package_uploaded`.
20
+ * Only stores: no install, no desired state change (T14).
21
+ * - Over `packages.maxBytes` -> `extension.package_too_large`; invalid package ->
22
+ * `extension.package_invalid` (details list each problem);
23
+ * - extension name equal to a config-declared one -> `extension.config_declared`;
24
+ * - an install record of the same name comes from another npm package -> `extension.name_conflict`
25
+ * (a new version of the same package is an upgrade, handled elsewhere).
26
+ * `actor` null means the CLI (no enterprise admin re-check, audit without an actor).
27
+ */
28
+ async ingest(actor, bytes, src, opts = {}) {
29
+ const maxBytes = this.d.config().packages.maxBytes;
30
+ if (bytes.byteLength > maxBytes) {
31
+ throw new ApiError("extension.package_too_large", `The extension package is larger than ${maxBytes} bytes`);
32
+ }
33
+ let pkg;
34
+ try {
35
+ pkg = await readExtensionPackage(bytes, { maxBytes, hostSdkVersion: SDK_VERSION });
36
+ }
37
+ catch (e) {
38
+ if (e instanceof ExtensionPackageError)
39
+ throw extensionPackageApiError(e);
40
+ throw e;
41
+ }
42
+ const m = pkg.section.manifest;
43
+ const packageName = String(pkg.packageJson.name);
44
+ if (opts.expectPackageName !== undefined && packageName !== opts.expectPackageName) {
45
+ const issue = `package.json name "${packageName}" does not match the requested npm package ${opts.expectPackageName}`;
46
+ throw new ApiError("extension.package_invalid", `Invalid extension package: ${issue}`, [
47
+ issue,
48
+ ]);
49
+ }
50
+ const declared = this.d.declared().get(m.name);
51
+ if (declared === "config") {
52
+ throw new ApiError("extension.config_declared", `Extension ${m.name} is declared in the startup config (extensions); remove it there before installing it as a package`);
53
+ }
54
+ const installed = await this.d.db
55
+ .selectFrom("extension_installs")
56
+ .innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
57
+ .select("extension_packages.package_name")
58
+ .where("extension_installs.name", "=", m.name)
59
+ .executeTakeFirst();
60
+ if (installed && installed.package_name !== packageName) {
61
+ throw new ApiError("extension.name_conflict", `Extension ${m.name} is already installed from package ${installed.package_name}; package ${packageName} uses the same extension name`);
62
+ }
63
+ // 写包之前在锁内复核发起人仍是企业管理员(守卫读到的身份可能已过期);审计在写完后同样复核
64
+ if (actor !== null) {
65
+ await this.d.db.transaction().execute((trx) => lockEnterpriseAdminsAndAuthorize(trx, actor));
66
+ }
67
+ await this.d.blobs.put(pkg, bytes, {
68
+ source: src.source,
69
+ ref: src.ref,
70
+ actor,
71
+ ...(opts.store !== undefined && { store: opts.store }),
72
+ });
73
+ await this.d.db.transaction().execute(async (trx) => {
74
+ if (actor !== null)
75
+ await lockEnterpriseAdminsAndAuthorize(trx, actor);
76
+ await audit(trx, {
77
+ ...(actor !== null && { actorAccountId: actor }),
78
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
79
+ action: "extension.package_uploaded",
80
+ target: m.name,
81
+ detail: { name: m.name, version: m.version, sha256: pkg.sha256, source: src.source },
82
+ });
83
+ });
84
+ const set = permissionSetOfPackage(pkg);
85
+ const snapshot = (await new ExtensionApprovals(this.d.db).all()).get(m.name);
86
+ const { added, removed } = diffPermissions(snapshot?.permissions, set);
87
+ const warnings = migrationWarnings(pkg.migrationSql, m.name);
88
+ return {
89
+ sha256: pkg.sha256,
90
+ name: m.name,
91
+ version: m.version,
92
+ permissions: permissionGroups(set),
93
+ added,
94
+ addedItems: permissionKeyItems(added),
95
+ removed,
96
+ reviewHash: reviewHash(set, warnings),
97
+ warnings,
98
+ };
99
+ }
100
+ /** 上传的 tgz(来源 `file`)。 */
101
+ ingestFile(actor, bytes, opts = {}) {
102
+ return this.ingest(actor, bytes, { source: "file", ref: "upload" }, opts);
103
+ }
104
+ /**
105
+ * Fetches one package from the configured npm registry (verified by `dist.integrity`, see
106
+ * packages/npm.ts), downloading only, not storing: download failure -> `packages.npm_failed` (502);
107
+ * over `packages.maxBytes` -> `extension.package_too_large`. Enterprise catalog npm imports use it
108
+ * too.
109
+ */
110
+ async fetchNpm(input, signal) {
111
+ const c = this.d.config();
112
+ const cfg = {
113
+ registry: c.packages.npmRegistry,
114
+ maxBytes: c.packages.maxBytes,
115
+ ...(c.packages.npmToken !== undefined && { token: c.packages.npmToken }),
116
+ };
117
+ const timeout = AbortSignal.timeout(this.d.npmTimeoutMs ?? 120_000);
118
+ try {
119
+ return await fetchNpmPackage(cfg, input.package, input.version, signal ? AbortSignal.any([signal, timeout]) : timeout);
120
+ }
121
+ catch (e) {
122
+ if (e instanceof PackageTooLargeError) {
123
+ throw new ApiError("extension.package_too_large", e.message);
124
+ }
125
+ if (e instanceof NpmFetchError)
126
+ throw new ApiError("packages.npm_failed", e.message);
127
+ throw e;
128
+ }
129
+ }
130
+ /**
131
+ * Downloads the package of a marketplace npm source (T24, C26): from `tarball` when given (https
132
+ * required, `marketplaces.allowInsecureLoopback` for tests only; no registry metadata request;
133
+ * `packages.npmToken` is sent only when the tarball has the registry's origin), otherwise from the
134
+ * configured npm registry; always verified against the marketplace's sha512, never npm metadata.
135
+ * Mismatch -> 502 `marketplace.integrity_mismatch` (with prefixes of the expected and actual sha512);
136
+ * download failure -> 502 `marketplace.fetch_failed`; over `packages.maxBytes` ->
137
+ * `extension.package_too_large`.
138
+ */
139
+ fetchMarketplacePackage(input, signal) {
140
+ return this.fetchVerified(input, signal, {
141
+ mismatch: "marketplace.integrity_mismatch",
142
+ failed: "marketplace.fetch_failed",
143
+ against: "the marketplace",
144
+ });
145
+ }
146
+ /**
147
+ * The npm provenance of `name@version` from the configured registry (spec §5.5; display only,
148
+ * see packages/provenance.ts): bounded to {@link PROVENANCE_TIMEOUT_MS} and never throws, a
149
+ * failure is `{ checked: false, reason }`. `integrity` ties the statement to the tarball.
150
+ */
151
+ fetchProvenance(input, signal) {
152
+ const c = this.d.config();
153
+ const cfg = {
154
+ registry: c.packages.npmRegistry,
155
+ maxBytes: c.packages.maxBytes,
156
+ ...(c.packages.npmToken !== undefined && { token: c.packages.npmToken }),
157
+ };
158
+ const timeout = AbortSignal.timeout(PROVENANCE_TIMEOUT_MS);
159
+ return fetchProvenance(cfg, input.package, input.version, signal ? AbortSignal.any([signal, timeout]) : timeout, input.integrity !== undefined ? { integrity: input.integrity } : {});
160
+ }
161
+ async fetchVerified(input, signal, codes) {
162
+ const c = this.d.config();
163
+ const cfg = {
164
+ registry: c.packages.npmRegistry,
165
+ maxBytes: c.packages.maxBytes,
166
+ allowInsecureLoopback: c.marketplaces.allowInsecureLoopback,
167
+ ...(c.packages.npmToken !== undefined && { token: c.packages.npmToken }),
168
+ };
169
+ const timeout = AbortSignal.timeout(this.d.npmTimeoutMs ?? 120_000);
170
+ try {
171
+ return await fetchNpmPackage(cfg, input.package, input.version, signal ? AbortSignal.any([signal, timeout]) : timeout, {
172
+ expectedIntegrity: input.integrity,
173
+ ...(input.tarball !== undefined && { tarballUrl: input.tarball }),
174
+ });
175
+ }
176
+ catch (e) {
177
+ if (e instanceof PackageTooLargeError) {
178
+ throw new ApiError("extension.package_too_large", e.message);
179
+ }
180
+ if (e instanceof IntegrityMismatchError) {
181
+ const prefix = (sri) => `${sri.slice(0, 19)}…`;
182
+ throw new ApiError(codes.mismatch, `The package does not match ${codes.against} (expected ${prefix(e.expected)}, got ${prefix(e.actual)}); installation refused`, [{ expected: prefix(e.expected), actual: prefix(e.actual) }]);
183
+ }
184
+ if (e instanceof NpmFetchError)
185
+ throw new ApiError(codes.failed, e.message);
186
+ throw e;
187
+ }
188
+ }
189
+ /**
190
+ * Fetches from the configured npm registry (source `npm`, `ref` is `<package>@<version>`). Download
191
+ * failure -> `packages.npm_failed` (502); over the size limit -> `extension.package_too_large`; the
192
+ * npm name in the package differs from the requested one -> `extension.package_invalid`.
193
+ */
194
+ async ingestNpm(actor, input, opts = {}) {
195
+ const got = await this.fetchNpm(input, opts.signal);
196
+ return this.ingest(actor, got.bytes, { source: "npm", ref: `${input.package}@${got.version}` }, {
197
+ expectPackageName: input.package,
198
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
199
+ ...(opts.store !== undefined && { store: opts.store }),
200
+ });
201
+ }
202
+ /** 全部安装记录(按名字)。 */
203
+ async list() {
204
+ const rows = await this.d.db
205
+ .selectFrom("extension_installs")
206
+ .innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
207
+ .selectAll("extension_installs")
208
+ .select("extension_packages.package_name")
209
+ .orderBy("extension_installs.name")
210
+ .execute();
211
+ return rows.map((r) => ({
212
+ name: r.name,
213
+ sha256: r.sha256,
214
+ version: r.version,
215
+ source: r.source,
216
+ packageName: r.package_name,
217
+ desiredState: r.desired_state,
218
+ required: r.required,
219
+ migratedSha: r.migrated_sha,
220
+ installedBy: r.installed_by,
221
+ installedAt: r.installed_at.toISOString(),
222
+ updatedBy: r.updated_by,
223
+ updatedAt: r.updated_at.toISOString(),
224
+ }));
225
+ }
226
+ /** Install records desired enabled, with their reviewed extension sections (by name). */
227
+ async desired() {
228
+ const rows = await this.d.db
229
+ .selectFrom("extension_installs")
230
+ .innerJoin("extension_packages", "extension_packages.sha256", "extension_installs.sha256")
231
+ .select([
232
+ "extension_installs.name",
233
+ "extension_installs.sha256",
234
+ "extension_installs.version",
235
+ "extension_installs.source",
236
+ "extension_installs.migrated_sha",
237
+ "extension_packages.section",
238
+ "extension_packages.blob_store",
239
+ ])
240
+ .where("extension_installs.desired_state", "=", "enabled")
241
+ .orderBy("extension_installs.name")
242
+ .execute();
243
+ return rows.map((r) => ({
244
+ name: r.name,
245
+ sha256: r.sha256,
246
+ version: r.version,
247
+ source: r.source,
248
+ migratedSha: r.migrated_sha,
249
+ blobStore: r.blob_store,
250
+ section: r.section,
251
+ }));
252
+ }
253
+ }
@@ -0,0 +1,167 @@
1
+ import { type ExtensionManifest, type ExtensionPointRef, type StaticExtensionManifest } from "@capybara-hq/plugin-sdk";
2
+ import { type ExtensionPointAccess, type KernelDeps, type KernelExtensionContext, LiveConfig, type RegisteredTool, type Route } from "../ctx/create-ctx.js";
3
+ import type { UiActionHandler, UiRender } from "../ui/registry.js";
4
+ import type { RegisteredHook } from "./hooks.js";
5
+ import { InflightTracker } from "./inflight.js";
6
+ import type { Registration } from "./ledger.js";
7
+ import type { PermissionSet } from "./permission-set.js";
8
+ import type { ExtensionSource } from "./sources.js";
9
+ export type { Registration, RegistrationKind } from "./ledger.js";
10
+ /** 模块清单与审阅过的静态清单(包内 `capybara.manifest`)不一致。 */
11
+ export declare class ManifestMismatchError extends Error {
12
+ constructor(plugin: string, moduleName: string);
13
+ }
14
+ /** 模块清单与审阅过的静态清单是否一致(名字与 {@link staticManifestOf} 都须相同)。 */
15
+ export declare function matchesSection(manifest: ExtensionManifest, name: string, section: StaticExtensionManifest): boolean;
16
+ /** 导入一个插件模块(default 导出)并按 defineExtension 校验清单。 */
17
+ export declare function importExtensionModule(url: string, label: string, resolveFrom: string): Promise<ExtensionManifest>;
18
+ /** Constructor parameters of {@link ExtensionInstance} (kernel internal). */
19
+ export interface ExtensionInstanceInit {
20
+ manifest: ExtensionManifest;
21
+ source: ExtensionSource;
22
+ sha256: string | null;
23
+ generation: number;
24
+ permissions: PermissionSet;
25
+ /** 部署配置摘要(见 `deploymentConfigHash`)。 */
26
+ configHash: string;
27
+ /** 已按清单 schema 校验的部署配置(含密钥);与 ctx 共用同一个 {@link LiveConfig}。 */
28
+ config: LiveConfig;
29
+ /** 模块入口(`file:` URL):同进程重新加载时用。 */
30
+ entryUrl: string;
31
+ ctx: KernelExtensionContext;
32
+ log: KernelDeps["log"];
33
+ }
34
+ /**
35
+ * 一个已完成 setup 的插件实例(一代):清单、来源、权限、部署配置,以及它经 ctx 做过的全部登记(账)。
36
+ * 同一插件升级 / 重新加载会产生新实例(generation 加一),旧实例 `dispose` 后它的登记全部撤销;
37
+ * 旧模块代码留在内存里直到进程重启(ESM 无法卸载)。
38
+ */
39
+ export declare class ExtensionInstance {
40
+ readonly name: string;
41
+ readonly version: string;
42
+ readonly sha256: string | null;
43
+ readonly source: ExtensionSource;
44
+ readonly generation: number;
45
+ readonly manifest: ExtensionManifest;
46
+ readonly permissions: PermissionSet;
47
+ private hash;
48
+ private readonly live;
49
+ readonly entryUrl: string;
50
+ readonly inflight: InflightTracker;
51
+ private readonly ctx;
52
+ private readonly log;
53
+ private disposing;
54
+ /** {@link hurry}:进行中的 dispose 不再等排空时限。 */
55
+ private readonly hurried;
56
+ constructor(init: ExtensionInstanceInit);
57
+ /** 此刻的部署配置(hot 改动后是新值)。 */
58
+ get config(): unknown;
59
+ /** 部署配置摘要(见 `deploymentConfigHash`;hot 改动后随之更新)。 */
60
+ get configHash(): string;
61
+ /** hot 字段改动:就地替换部署配置(插件下次读 `ctx.config` 拿到新值),不重新 setup(C10)。 */
62
+ updateConfig(config: unknown, configHash: string): void;
63
+ /** 提供的能力(撤销后为空)。 */
64
+ get provided(): ReadonlyMap<ExtensionPointRef, unknown>;
65
+ get routes(): readonly Route[];
66
+ get tools(): readonly RegisteredTool[];
67
+ /** Hooks registered through `ctx.hooks.on` (empty after revocation). */
68
+ get hooks(): readonly RegisteredHook[];
69
+ get uiViews(): ReadonlyMap<string, UiRender>;
70
+ get uiActions(): ReadonlyMap<string, UiActionHandler>;
71
+ /** 账上仍在的登记(撤销后为空)。 */
72
+ registrations(): Registration[];
73
+ get disposed(): boolean;
74
+ /**
75
+ * Revokes this instance (idempotent; the caller should first remove it from the registry or replace
76
+ * it). In order:
77
+ * 1. stop taking new work (in-flight tracker closed, queue workers stop taking new jobs);
78
+ * 2. wait for in-flight tool calls and running queue worker jobs together, up to `drainMs` (one
79
+ * deadline);
80
+ * 3. abort: remaining in-flight calls end with `ExtensionUnloadedError` (the model gets
81
+ * `PLUGIN_UNLOADED_TOOL_ERROR`), `ctx.signal` aborts (so work that honours `ctx.signal` is not
82
+ * aborted within the drain limit);
83
+ * 4. revoke the ledger's registrations one by one (in reverse; queue jobs still running at the
84
+ * deadline are forced to stay in the queue);
85
+ * 5. call the extension's `dispose(ctx)`, up to `disposeTimeoutMs` (a throw or timeout is only
86
+ * logged, and it goes on);
87
+ * 6. close the ctx (queue connections, pending audit writes). Step 6 throws on failure (the caller
88
+ * logs it).
89
+ * `waitQueueJobs` (shutdown path): queue workers wait for running jobs to finish instead of being
90
+ * force-closed at the deadline.
91
+ */
92
+ dispose(opts: DisposeOptions): Promise<void>;
93
+ /**
94
+ * 让进行中(或之后开始)的 {@link dispose} 立即结束排空:余下的在途调用随即中止,队列任务按到时处理
95
+ * (停机时宿主对后台撤销中的旧实例调用)。没有在撤销时等同于以排空时限 0 撤销。
96
+ */
97
+ hurry(): Promise<void>;
98
+ private doDispose;
99
+ }
100
+ /** 插件 `dispose()` 的默认时限(`extensionHost.disposeTimeoutSeconds` 的默认值)。 */
101
+ export declare const DEFAULT_DISPOSE_TIMEOUT_MS = 10000;
102
+ /** Parameters of {@link ExtensionInstance.dispose}. */
103
+ export interface DisposeOptions {
104
+ /** 在途调用与队列任务的排空时限(毫秒)。 */
105
+ drainMs: number;
106
+ /** 插件 `dispose()` 的时限(毫秒),默认 {@link DEFAULT_DISPOSE_TIMEOUT_MS}。 */
107
+ disposeTimeoutMs?: number;
108
+ /** 停机路径:队列 worker 一直等进行中的任务结束,不按截止时刻强制关闭。 */
109
+ waitQueueJobs?: boolean;
110
+ }
111
+ /** 同进程导入过的插件模块数超过多少(每个插件第一个入口不算)就告警。 */
112
+ export declare const UPGRADE_WARN_THRESHOLD = 20;
113
+ /**
114
+ * 记录本进程导入过的插件模块入口(按插件名去重的 URL):ESM 模块无法卸载,每个新入口(升级到新包)
115
+ * 的代码都留在内存里直到进程重启。同一 URL 的重新加载不新增模块,不计数。
116
+ * 升级数 = 各插件「不同入口数 - 1」之和;第一次超过 {@link UPGRADE_WARN_THRESHOLD} 时 `record` 返回 true(只一次)。
117
+ */
118
+ export declare class ImportTracker {
119
+ private readonly urls;
120
+ private warned;
121
+ /** 本进程的升级数(见类注释)。 */
122
+ get upgrades(): number;
123
+ /** 记一次导入;返回这次是否应当告警。 */
124
+ record(plugin: string, url: string): boolean;
125
+ }
126
+ /** 升级次数超过阈值的告警(旧模块代码留在内存直到重启)。 */
127
+ export declare function warnUpgrades(log: KernelDeps["log"], imports: ImportTracker): void;
128
+ /** {@link setupInstance} / {@link loadInstance} 的依赖。 */
129
+ export interface LoadDeps {
130
+ kernel: KernelDeps;
131
+ extensionPointAccess: ExtensionPointAccess;
132
+ /** 该插件下一代的编号(宿主按插件名递增)。 */
133
+ nextGeneration(name: string): number;
134
+ /** 本进程导入过的模块入口({@link loadInstance} 每次导入都记一笔,超过阈值时告警)。 */
135
+ imports?: ImportTracker;
136
+ }
137
+ /** 在已导入、已核对的清单上建 ctx(记账)并 setup;setup 抛错时撤销已登记的再抛。 */
138
+ export declare function setupInstance(deps: LoadDeps, manifest: ExtensionManifest, input: {
139
+ entryUrl: string;
140
+ source: ExtensionSource;
141
+ sha256: string | null;
142
+ config: unknown;
143
+ configHash: string;
144
+ permissions: PermissionSet;
145
+ /** 已建好 ctx、setup 进行中时回调(宿主据此在 close() 时立即关闭它)。 */
146
+ onCtx?: (ctx: KernelExtensionContext | undefined) => void;
147
+ }): Promise<ExtensionInstance>;
148
+ /**
149
+ * 加载一个插件实例:import → defineExtension → 有包内静态清单(`section`)时与 {@link staticManifestOf} 核对
150
+ * (名字与静态清单都须一致,否则抛 {@link ManifestMismatchError};配置声明 / 内置插件没有 section,跳过核对)
151
+ * → 建 ctx(记账)→ setup;setup 抛错时撤销已登记的再抛。
152
+ * 不做权限闸门、部署配置校验与迁移(宿主在此之前完成);`config` 为已校验的部署配置。
153
+ */
154
+ export declare function loadInstance(deps: LoadDeps, input: {
155
+ entryUrl: string;
156
+ source: ExtensionSource;
157
+ sha256: string | null;
158
+ config: unknown;
159
+ configHash: string;
160
+ permissions: PermissionSet;
161
+ /** 安装记录的包内静态清单与插件名(审阅过的那份)。 */
162
+ section?: {
163
+ name: string;
164
+ manifest: StaticExtensionManifest;
165
+ };
166
+ onCtx?: (ctx: KernelExtensionContext | undefined) => void;
167
+ }): Promise<ExtensionInstance>;