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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +20 -2
  4. package/bootstrap.json +26 -0
  5. package/dist/admin/admin.controller.d.ts +139 -0
  6. package/dist/admin/admin.controller.js +238 -0
  7. package/dist/admin/extensions.controller.d.ts +100 -0
  8. package/dist/admin/extensions.controller.js +226 -0
  9. package/dist/admin/setup.controller.d.ts +36 -0
  10. package/dist/admin/setup.controller.js +106 -0
  11. package/dist/admin/setup.service.d.ts +47 -0
  12. package/dist/admin/setup.service.js +90 -0
  13. package/dist/agents/agents.controller.d.ts +205 -0
  14. package/dist/agents/agents.controller.js +144 -0
  15. package/dist/agents/agents.service.d.ts +177 -0
  16. package/dist/agents/agents.service.js +677 -0
  17. package/dist/agents/definition.d.ts +198 -0
  18. package/dist/agents/definition.js +152 -0
  19. package/dist/agents/models.controller.d.ts +13 -0
  20. package/dist/agents/models.controller.js +31 -0
  21. package/dist/agents/templates.controller.d.ts +15 -0
  22. package/dist/agents/templates.controller.js +37 -0
  23. package/dist/agents/templates.d.ts +83 -0
  24. package/dist/agents/templates.js +173 -0
  25. package/dist/catalog/admin-catalog.controller.d.ts +143 -0
  26. package/dist/catalog/admin-catalog.controller.js +245 -0
  27. package/dist/catalog/catalog.service.d.ts +430 -0
  28. package/dist/catalog/catalog.service.js +882 -0
  29. package/dist/catalog/claude/agents.d.ts +27 -0
  30. package/dist/catalog/claude/agents.js +270 -0
  31. package/dist/catalog/claude/commands.d.ts +50 -0
  32. package/dist/catalog/claude/commands.js +179 -0
  33. package/dist/catalog/claude/manifest.d.ts +69 -0
  34. package/dist/catalog/claude/manifest.js +134 -0
  35. package/dist/catalog/claude/marketplace.d.ts +35 -0
  36. package/dist/catalog/claude/marketplace.js +194 -0
  37. package/dist/catalog/claude/mcp.d.ts +33 -0
  38. package/dist/catalog/claude/mcp.js +226 -0
  39. package/dist/catalog/claude/report.d.ts +86 -0
  40. package/dist/catalog/claude/report.js +121 -0
  41. package/dist/catalog/claude/translate.d.ts +56 -0
  42. package/dist/catalog/claude/translate.js +857 -0
  43. package/dist/catalog/cli.d.ts +46 -0
  44. package/dist/catalog/cli.js +211 -0
  45. package/dist/catalog/git-source.d.ts +127 -0
  46. package/dist/catalog/git-source.js +520 -0
  47. package/dist/catalog/marketplace-fetch.d.ts +99 -0
  48. package/dist/catalog/marketplace-fetch.js +203 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +97 -0
  50. package/dist/catalog/marketplaces.controller.js +197 -0
  51. package/dist/catalog/marketplaces.service.d.ts +340 -0
  52. package/dist/catalog/marketplaces.service.js +1217 -0
  53. package/dist/catalog/org-catalog.controller.d.ts +128 -0
  54. package/dist/catalog/org-catalog.controller.js +277 -0
  55. package/dist/catalog/org-catalog.service.d.ts +246 -0
  56. package/dist/catalog/org-catalog.service.js +625 -0
  57. package/dist/catalog/plugin-import.d.ts +436 -0
  58. package/dist/catalog/plugin-import.js +1069 -0
  59. package/dist/catalog/plugin-install.d.ts +447 -0
  60. package/dist/catalog/plugin-install.js +1333 -0
  61. package/dist/catalog/plugin-package.d.ts +143 -0
  62. package/dist/catalog/plugin-package.js +382 -0
  63. package/dist/catalog/plugin-upgrade.d.ts +222 -0
  64. package/dist/catalog/plugin-upgrade.js +1219 -0
  65. package/dist/catalog/requests.service.d.ts +162 -0
  66. package/dist/catalog/requests.service.js +504 -0
  67. package/dist/catalog/schema-path.d.ts +7 -0
  68. package/dist/catalog/schema-path.js +63 -0
  69. package/dist/catalog/upgrade-targets.d.ts +59 -0
  70. package/dist/catalog/upgrade-targets.js +90 -0
  71. package/dist/catalog/versions.d.ts +31 -0
  72. package/dist/catalog/versions.js +44 -0
  73. package/dist/channels/actions.d.ts +37 -0
  74. package/dist/channels/actions.js +121 -0
  75. package/dist/channels/cards.d.ts +44 -0
  76. package/dist/channels/cards.js +156 -0
  77. package/dist/channels/connections.controller.d.ts +59 -0
  78. package/dist/channels/connections.controller.js +115 -0
  79. package/dist/channels/connections.service.d.ts +187 -0
  80. package/dist/channels/connections.service.js +534 -0
  81. package/dist/channels/features.d.ts +12 -0
  82. package/dist/channels/features.js +22 -0
  83. package/dist/channels/inbound.d.ts +120 -0
  84. package/dist/channels/inbound.js +332 -0
  85. package/dist/channels/outbound.d.ts +140 -0
  86. package/dist/channels/outbound.js +1126 -0
  87. package/dist/channels/phrases.d.ts +100 -0
  88. package/dist/channels/phrases.js +81 -0
  89. package/dist/channels/supervisor.d.ts +182 -0
  90. package/dist/channels/supervisor.js +625 -0
  91. package/dist/channels/threads.d.ts +29 -0
  92. package/dist/channels/threads.js +104 -0
  93. package/dist/channels/webhook-url.d.ts +16 -0
  94. package/dist/channels/webhook-url.js +34 -0
  95. package/dist/channels/webhook.controller.d.ts +19 -0
  96. package/dist/channels/webhook.controller.js +72 -0
  97. package/dist/channels/webhook.d.ts +73 -0
  98. package/dist/channels/webhook.js +274 -0
  99. package/dist/config/docs.d.ts +9 -0
  100. package/dist/config/docs.js +85 -0
  101. package/dist/config/env.d.ts +6 -0
  102. package/dist/config/env.js +73 -0
  103. package/dist/config/fields.d.ts +42 -0
  104. package/dist/config/fields.js +214 -0
  105. package/dist/config/file-source.d.ts +3 -0
  106. package/dist/config/file-source.js +31 -0
  107. package/dist/config/load.d.ts +20 -0
  108. package/dist/config/load.js +98 -0
  109. package/dist/config/nacos-source.d.ts +31 -0
  110. package/dist/config/nacos-source.js +229 -0
  111. package/dist/config/schema.d.ts +237 -0
  112. package/dist/config/schema.js +1192 -0
  113. package/dist/config/sources.d.ts +18 -0
  114. package/dist/config/sources.js +59 -0
  115. package/dist/config/types.d.ts +9 -0
  116. package/dist/config/types.js +7 -0
  117. package/dist/conversations/artifacts.d.ts +52 -0
  118. package/dist/conversations/artifacts.js +137 -0
  119. package/dist/conversations/attachments.controller.d.ts +28 -0
  120. package/dist/conversations/attachments.controller.js +96 -0
  121. package/dist/conversations/attachments.service.d.ts +180 -0
  122. package/dist/conversations/attachments.service.js +578 -0
  123. package/dist/conversations/conversations.controller.d.ts +288 -0
  124. package/dist/conversations/conversations.controller.js +607 -0
  125. package/dist/conversations/conversations.service.d.ts +321 -0
  126. package/dist/conversations/conversations.service.js +754 -0
  127. package/dist/conversations/event-log.d.ts +122 -0
  128. package/dist/conversations/event-log.js +259 -0
  129. package/dist/conversations/events.d.ts +856 -0
  130. package/dist/conversations/events.js +639 -0
  131. package/dist/conversations/files.d.ts +92 -0
  132. package/dist/conversations/files.js +213 -0
  133. package/dist/conversations/outputs-read.d.ts +34 -0
  134. package/dist/conversations/outputs-read.js +37 -0
  135. package/dist/conversations/queue.d.ts +169 -0
  136. package/dist/conversations/queue.js +527 -0
  137. package/dist/conversations/sandbox-status.d.ts +21 -0
  138. package/dist/conversations/sandbox-status.js +24 -0
  139. package/dist/conversations/selection.d.ts +46 -0
  140. package/dist/conversations/selection.js +75 -0
  141. package/dist/conversations/titles.d.ts +93 -0
  142. package/dist/conversations/titles.js +423 -0
  143. package/dist/ctx/bus.d.ts +16 -0
  144. package/dist/ctx/bus.js +101 -0
  145. package/dist/ctx/create-ctx.d.ts +109 -0
  146. package/dist/ctx/create-ctx.js +592 -0
  147. package/dist/ctx/kv.d.ts +4 -0
  148. package/dist/ctx/kv.js +31 -0
  149. package/dist/ctx/lock.d.ts +4 -0
  150. package/dist/ctx/lock.js +39 -0
  151. package/dist/ctx/namespace.d.ts +6 -0
  152. package/dist/ctx/namespace.js +12 -0
  153. package/dist/ctx/queue.d.ts +25 -0
  154. package/dist/ctx/queue.js +151 -0
  155. package/dist/ctx/secrets.d.ts +45 -0
  156. package/dist/ctx/secrets.js +175 -0
  157. package/dist/db/kernel-schema.d.ts +1122 -0
  158. package/dist/db/kernel-schema.js +5 -0
  159. package/dist/db/migrator.d.ts +28 -0
  160. package/dist/db/migrator.js +140 -0
  161. package/dist/db/pool.d.ts +21 -0
  162. package/dist/db/pool.js +28 -0
  163. package/dist/db/sql-statements.d.ts +34 -0
  164. package/dist/db/sql-statements.js +168 -0
  165. package/dist/errors.d.ts +211 -0
  166. package/dist/errors.js +213 -0
  167. package/dist/evals/budget.d.ts +61 -0
  168. package/dist/evals/budget.js +181 -0
  169. package/dist/evals/diff.d.ts +55 -0
  170. package/dist/evals/diff.js +133 -0
  171. package/dist/evals/judge.d.ts +53 -0
  172. package/dist/evals/judge.js +149 -0
  173. package/dist/evals/plan.d.ts +47 -0
  174. package/dist/evals/plan.js +77 -0
  175. package/dist/evals/reconstruct.d.ts +137 -0
  176. package/dist/evals/reconstruct.js +322 -0
  177. package/dist/evals/recorded-tools.d.ts +54 -0
  178. package/dist/evals/recorded-tools.js +167 -0
  179. package/dist/evals/run-replay.d.ts +86 -0
  180. package/dist/evals/run-replay.js +502 -0
  181. package/dist/evals/runs.controller.d.ts +100 -0
  182. package/dist/evals/runs.controller.js +199 -0
  183. package/dist/evals/runs.service.d.ts +275 -0
  184. package/dist/evals/runs.service.js +836 -0
  185. package/dist/evals/sets.controller.d.ts +61 -0
  186. package/dist/evals/sets.controller.js +183 -0
  187. package/dist/evals/sets.service.d.ts +128 -0
  188. package/dist/evals/sets.service.js +558 -0
  189. package/dist/evals/snapshot.d.ts +76 -0
  190. package/dist/evals/snapshot.js +207 -0
  191. package/dist/evals/step-replay.d.ts +113 -0
  192. package/dist/evals/step-replay.js +181 -0
  193. package/dist/evals/trajectory.controller.d.ts +41 -0
  194. package/dist/evals/trajectory.controller.js +88 -0
  195. package/dist/evals/trajectory.d.ts +144 -0
  196. package/dist/evals/trajectory.js +338 -0
  197. package/dist/evals/trajectory.service.d.ts +108 -0
  198. package/dist/evals/trajectory.service.js +323 -0
  199. package/dist/evals/worker.d.ts +101 -0
  200. package/dist/evals/worker.js +790 -0
  201. package/dist/extensions/admin-ops.d.ts +105 -0
  202. package/dist/extensions/admin-ops.js +353 -0
  203. package/dist/extensions/admin-view.d.ts +79 -0
  204. package/dist/extensions/admin-view.js +327 -0
  205. package/dist/extensions/approvals.d.ts +119 -0
  206. package/dist/extensions/approvals.js +205 -0
  207. package/dist/extensions/blobs.d.ts +45 -0
  208. package/dist/extensions/blobs.js +160 -0
  209. package/dist/extensions/bootstrap.d.ts +176 -0
  210. package/dist/extensions/bootstrap.js +535 -0
  211. package/dist/extensions/cli.d.ts +61 -0
  212. package/dist/extensions/cli.js +165 -0
  213. package/dist/extensions/config-json-schema.d.ts +9 -0
  214. package/dist/extensions/config-json-schema.js +73 -0
  215. package/dist/extensions/deployment-config.d.ts +138 -0
  216. package/dist/extensions/deployment-config.js +394 -0
  217. package/dist/extensions/enabled.d.ts +31 -0
  218. package/dist/extensions/enabled.js +55 -0
  219. package/dist/extensions/hooks.d.ts +161 -0
  220. package/dist/extensions/hooks.js +425 -0
  221. package/dist/extensions/host.d.ts +577 -0
  222. package/dist/extensions/host.js +2071 -0
  223. package/dist/extensions/inflight.d.ts +69 -0
  224. package/dist/extensions/inflight.js +277 -0
  225. package/dist/extensions/installs.d.ts +166 -0
  226. package/dist/extensions/installs.js +253 -0
  227. package/dist/extensions/instance.d.ts +167 -0
  228. package/dist/extensions/instance.js +329 -0
  229. package/dist/extensions/ledger.d.ts +30 -0
  230. package/dist/extensions/ledger.js +50 -0
  231. package/dist/extensions/lifecycle.d.ts +80 -0
  232. package/dist/extensions/lifecycle.js +152 -0
  233. package/dist/extensions/migrate-lock.d.ts +51 -0
  234. package/dist/extensions/migrate-lock.js +100 -0
  235. package/dist/extensions/org-config.controller.d.ts +24 -0
  236. package/dist/extensions/org-config.controller.js +59 -0
  237. package/dist/extensions/org-config.d.ts +169 -0
  238. package/dist/extensions/org-config.js +520 -0
  239. package/dist/extensions/package.d.ts +115 -0
  240. package/dist/extensions/package.js +246 -0
  241. package/dist/extensions/permission-set.d.ts +117 -0
  242. package/dist/extensions/permission-set.js +184 -0
  243. package/dist/extensions/permission-view.d.ts +194 -0
  244. package/dist/extensions/permission-view.js +284 -0
  245. package/dist/extensions/registry.d.ts +24 -0
  246. package/dist/extensions/registry.js +56 -0
  247. package/dist/extensions/resolve.d.ts +12 -0
  248. package/dist/extensions/resolve.js +71 -0
  249. package/dist/extensions/sources.d.ts +69 -0
  250. package/dist/extensions/sources.js +120 -0
  251. package/dist/extensions/sync.d.ts +40 -0
  252. package/dist/extensions/sync.js +242 -0
  253. package/dist/files/previewers.controller.d.ts +46 -0
  254. package/dist/files/previewers.controller.js +105 -0
  255. package/dist/files/previewers.d.ts +100 -0
  256. package/dist/files/previewers.js +250 -0
  257. package/dist/http/api.module.d.ts +114 -0
  258. package/dist/http/api.module.js +448 -0
  259. package/dist/http/app.d.ts +77 -0
  260. package/dist/http/app.js +220 -0
  261. package/dist/http/error.filter.d.ts +21 -0
  262. package/dist/http/error.filter.js +85 -0
  263. package/dist/http/gateway.module.d.ts +15 -0
  264. package/dist/http/gateway.module.js +13 -0
  265. package/dist/http/health.controller.d.ts +26 -0
  266. package/dist/http/health.controller.js +79 -0
  267. package/dist/http/nest-logger.d.ts +20 -0
  268. package/dist/http/nest-logger.js +28 -0
  269. package/dist/http/plugin-dispatch.d.ts +68 -0
  270. package/dist/http/plugin-dispatch.js +200 -0
  271. package/dist/http/tokens.d.ts +131 -0
  272. package/dist/http/tokens.js +131 -0
  273. package/dist/http/zod.pipe.d.ts +8 -0
  274. package/dist/http/zod.pipe.js +14 -0
  275. package/dist/identity/accounts.d.ts +93 -0
  276. package/dist/identity/accounts.js +367 -0
  277. package/dist/identity/api-tokens.d.ts +73 -0
  278. package/dist/identity/api-tokens.js +197 -0
  279. package/dist/identity/audit.d.ts +23 -0
  280. package/dist/identity/audit.js +41 -0
  281. package/dist/identity/auth.controller.d.ts +40 -0
  282. package/dist/identity/auth.controller.js +130 -0
  283. package/dist/identity/auth.guard.d.ts +41 -0
  284. package/dist/identity/auth.guard.js +162 -0
  285. package/dist/identity/binding.d.ts +47 -0
  286. package/dist/identity/binding.js +84 -0
  287. package/dist/identity/cookies.d.ts +16 -0
  288. package/dist/identity/cookies.js +32 -0
  289. package/dist/identity/credential-check.d.ts +17 -0
  290. package/dist/identity/credential-check.js +24 -0
  291. package/dist/identity/enterprise-admin.d.ts +14 -0
  292. package/dist/identity/enterprise-admin.js +27 -0
  293. package/dist/identity/external.d.ts +106 -0
  294. package/dist/identity/external.js +337 -0
  295. package/dist/identity/hash.d.ts +2 -0
  296. package/dist/identity/hash.js +3 -0
  297. package/dist/identity/login.d.ts +6 -0
  298. package/dist/identity/login.js +20 -0
  299. package/dist/identity/me.controller.d.ts +61 -0
  300. package/dist/identity/me.controller.js +159 -0
  301. package/dist/identity/passwords.d.ts +6 -0
  302. package/dist/identity/passwords.js +37 -0
  303. package/dist/identity/principal.d.ts +56 -0
  304. package/dist/identity/principal.js +38 -0
  305. package/dist/identity/rate-limit.d.ts +55 -0
  306. package/dist/identity/rate-limit.js +121 -0
  307. package/dist/identity/sessions.d.ts +84 -0
  308. package/dist/identity/sessions.js +306 -0
  309. package/dist/identity/settings.d.ts +121 -0
  310. package/dist/identity/settings.js +248 -0
  311. package/dist/identity/sso.controller.d.ts +59 -0
  312. package/dist/identity/sso.controller.js +192 -0
  313. package/dist/identity/sso.d.ts +83 -0
  314. package/dist/identity/sso.js +202 -0
  315. package/dist/inbox/inbox.service.d.ts +43 -0
  316. package/dist/inbox/inbox.service.js +57 -0
  317. package/dist/index.d.ts +69 -0
  318. package/dist/index.js +67 -0
  319. package/dist/kernel.d.ts +259 -0
  320. package/dist/kernel.js +1326 -0
  321. package/dist/log-config.d.ts +9 -0
  322. package/dist/log-config.js +27 -0
  323. package/dist/log-context.d.ts +32 -0
  324. package/dist/log-context.js +40 -0
  325. package/dist/log-loki.d.ts +34 -0
  326. package/dist/log-loki.js +145 -0
  327. package/dist/log.d.ts +79 -0
  328. package/dist/log.js +303 -0
  329. package/dist/models/prices.d.ts +53 -0
  330. package/dist/models/prices.js +121 -0
  331. package/dist/models/purposes.controller.d.ts +19 -0
  332. package/dist/models/purposes.controller.js +56 -0
  333. package/dist/models/purposes.d.ts +140 -0
  334. package/dist/models/purposes.js +267 -0
  335. package/dist/net/proxy.d.ts +44 -0
  336. package/dist/net/proxy.js +162 -0
  337. package/dist/net/public-address.d.ts +60 -0
  338. package/dist/net/public-address.js +272 -0
  339. package/dist/net/safe-fetch.d.ts +38 -0
  340. package/dist/net/safe-fetch.js +140 -0
  341. package/dist/orgs/directory-sync.controller.d.ts +14 -0
  342. package/dist/orgs/directory-sync.controller.js +40 -0
  343. package/dist/orgs/directory-sync.d.ts +166 -0
  344. package/dist/orgs/directory-sync.js +558 -0
  345. package/dist/orgs/invitations.controller.d.ts +58 -0
  346. package/dist/orgs/invitations.controller.js +137 -0
  347. package/dist/orgs/invitations.service.d.ts +80 -0
  348. package/dist/orgs/invitations.service.js +217 -0
  349. package/dist/orgs/members.service.d.ts +63 -0
  350. package/dist/orgs/members.service.js +234 -0
  351. package/dist/orgs/offboarding.d.ts +141 -0
  352. package/dist/orgs/offboarding.js +398 -0
  353. package/dist/orgs/org-lock.d.ts +32 -0
  354. package/dist/orgs/org-lock.js +46 -0
  355. package/dist/orgs/org.guard.d.ts +35 -0
  356. package/dist/orgs/org.guard.js +95 -0
  357. package/dist/orgs/orgs.controller.d.ts +78 -0
  358. package/dist/orgs/orgs.controller.js +192 -0
  359. package/dist/orgs/orgs.service.d.ts +61 -0
  360. package/dist/orgs/orgs.service.js +209 -0
  361. package/dist/orgs/roles.d.ts +13 -0
  362. package/dist/orgs/roles.js +58 -0
  363. package/dist/orgs/settings.controller.d.ts +20 -0
  364. package/dist/orgs/settings.controller.js +53 -0
  365. package/dist/orgs/settings.service.d.ts +120 -0
  366. package/dist/orgs/settings.service.js +178 -0
  367. package/dist/packages/npm.d.ts +50 -0
  368. package/dist/packages/npm.js +218 -0
  369. package/dist/packages/provenance.d.ts +47 -0
  370. package/dist/packages/provenance.js +147 -0
  371. package/dist/packages/tgz.d.ts +76 -0
  372. package/dist/packages/tgz.js +225 -0
  373. package/dist/runtime/abort.d.ts +32 -0
  374. package/dist/runtime/abort.js +71 -0
  375. package/dist/runtime/checkpointer.d.ts +32 -0
  376. package/dist/runtime/checkpointer.js +243 -0
  377. package/dist/runtime/context/build.d.ts +254 -0
  378. package/dist/runtime/context/build.js +693 -0
  379. package/dist/runtime/context/claude-tools.d.ts +11 -0
  380. package/dist/runtime/context/claude-tools.js +24 -0
  381. package/dist/runtime/context/compaction.d.ts +26 -0
  382. package/dist/runtime/context/compaction.js +195 -0
  383. package/dist/runtime/context/pairing.d.ts +11 -0
  384. package/dist/runtime/context/pairing.js +82 -0
  385. package/dist/runtime/context/reminders.d.ts +5 -0
  386. package/dist/runtime/context/reminders.js +11 -0
  387. package/dist/runtime/context/skills.d.ts +105 -0
  388. package/dist/runtime/context/skills.js +283 -0
  389. package/dist/runtime/context/tokens.d.ts +19 -0
  390. package/dist/runtime/context/tokens.js +104 -0
  391. package/dist/runtime/conversation-lock.d.ts +40 -0
  392. package/dist/runtime/conversation-lock.js +97 -0
  393. package/dist/runtime/hook-calls.d.ts +84 -0
  394. package/dist/runtime/hook-calls.js +136 -0
  395. package/dist/runtime/langgraph-loop.d.ts +52 -0
  396. package/dist/runtime/langgraph-loop.js +247 -0
  397. package/dist/runtime/loop.d.ts +93 -0
  398. package/dist/runtime/loop.js +7 -0
  399. package/dist/runtime/maintenance.d.ts +80 -0
  400. package/dist/runtime/maintenance.js +148 -0
  401. package/dist/runtime/media-cache.d.ts +21 -0
  402. package/dist/runtime/media-cache.js +51 -0
  403. package/dist/runtime/model-call.d.ts +176 -0
  404. package/dist/runtime/model-call.js +1049 -0
  405. package/dist/runtime/providers.d.ts +86 -0
  406. package/dist/runtime/providers.js +224 -0
  407. package/dist/runtime/quota.d.ts +29 -0
  408. package/dist/runtime/quota.js +70 -0
  409. package/dist/runtime/run-finish.d.ts +45 -0
  410. package/dist/runtime/run-finish.js +69 -0
  411. package/dist/runtime/run-queue.d.ts +121 -0
  412. package/dist/runtime/run-queue.js +493 -0
  413. package/dist/runtime/run-worker.d.ts +138 -0
  414. package/dist/runtime/run-worker.js +806 -0
  415. package/dist/runtime/stream.controller.d.ts +34 -0
  416. package/dist/runtime/stream.controller.js +122 -0
  417. package/dist/runtime/stream.d.ts +63 -0
  418. package/dist/runtime/stream.js +262 -0
  419. package/dist/runtime/subagents/child.d.ts +80 -0
  420. package/dist/runtime/subagents/child.js +225 -0
  421. package/dist/runtime/subagents/definition.d.ts +103 -0
  422. package/dist/runtime/subagents/definition.js +392 -0
  423. package/dist/runtime/subagents/dispatch.d.ts +69 -0
  424. package/dist/runtime/subagents/dispatch.js +502 -0
  425. package/dist/runtime/subagents/limits.d.ts +23 -0
  426. package/dist/runtime/subagents/limits.js +34 -0
  427. package/dist/runtime/subagents/org-agents.d.ts +50 -0
  428. package/dist/runtime/subagents/org-agents.js +70 -0
  429. package/dist/runtime/subagents/preamble.d.ts +7 -0
  430. package/dist/runtime/subagents/preamble.js +11 -0
  431. package/dist/runtime/subagents/progress.d.ts +26 -0
  432. package/dist/runtime/subagents/progress.js +36 -0
  433. package/dist/runtime/subagents/roster.d.ts +55 -0
  434. package/dist/runtime/subagents/roster.js +111 -0
  435. package/dist/runtime/subagents/skill-fork.d.ts +123 -0
  436. package/dist/runtime/subagents/skill-fork.js +259 -0
  437. package/dist/runtime/usage-report.d.ts +163 -0
  438. package/dist/runtime/usage-report.js +551 -0
  439. package/dist/runtime/waits.d.ts +233 -0
  440. package/dist/runtime/waits.js +883 -0
  441. package/dist/sandbox/leases.d.ts +169 -0
  442. package/dist/sandbox/leases.js +515 -0
  443. package/dist/sandbox/lifecycle.d.ts +21 -0
  444. package/dist/sandbox/lifecycle.js +68 -0
  445. package/dist/sandbox/sandbox.service.d.ts +249 -0
  446. package/dist/sandbox/sandbox.service.js +908 -0
  447. package/dist/skills/catalog.d.ts +149 -0
  448. package/dist/skills/catalog.js +405 -0
  449. package/dist/skills/changes.controller.d.ts +56 -0
  450. package/dist/skills/changes.controller.js +136 -0
  451. package/dist/skills/changes.service.d.ts +175 -0
  452. package/dist/skills/changes.service.js +805 -0
  453. package/dist/skills/invocable.controller.d.ts +23 -0
  454. package/dist/skills/invocable.controller.js +50 -0
  455. package/dist/skills/invocation-keys.d.ts +23 -0
  456. package/dist/skills/invocation-keys.js +44 -0
  457. package/dist/skills/invoke.d.ts +135 -0
  458. package/dist/skills/invoke.js +286 -0
  459. package/dist/skills/package.d.ts +87 -0
  460. package/dist/skills/package.js +227 -0
  461. package/dist/skills/skills.controller.d.ts +40 -0
  462. package/dist/skills/skills.controller.js +110 -0
  463. package/dist/skills/skills.service.d.ts +192 -0
  464. package/dist/skills/skills.service.js +567 -0
  465. package/dist/storage/prefix.d.ts +36 -0
  466. package/dist/storage/prefix.js +104 -0
  467. package/dist/storage/purge.d.ts +27 -0
  468. package/dist/storage/purge.js +75 -0
  469. package/dist/storage/storage.service.d.ts +44 -0
  470. package/dist/storage/storage.service.js +145 -0
  471. package/dist/text.d.ts +13 -0
  472. package/dist/text.js +13 -0
  473. package/dist/tools/approvals.controller.d.ts +53 -0
  474. package/dist/tools/approvals.controller.js +128 -0
  475. package/dist/tools/approvals.service.d.ts +172 -0
  476. package/dist/tools/approvals.service.js +568 -0
  477. package/dist/tools/breaker.d.ts +28 -0
  478. package/dist/tools/breaker.js +72 -0
  479. package/dist/tools/builtins/agent.d.ts +81 -0
  480. package/dist/tools/builtins/agent.js +223 -0
  481. package/dist/tools/builtins/ask-user.d.ts +28 -0
  482. package/dist/tools/builtins/ask-user.js +139 -0
  483. package/dist/tools/builtins/read-tool-output.d.ts +18 -0
  484. package/dist/tools/builtins/read-tool-output.js +108 -0
  485. package/dist/tools/builtins/sandbox/bash.d.ts +16 -0
  486. package/dist/tools/builtins/sandbox/bash.js +137 -0
  487. package/dist/tools/builtins/sandbox/common.d.ts +116 -0
  488. package/dist/tools/builtins/sandbox/common.js +306 -0
  489. package/dist/tools/builtins/sandbox/deliver.d.ts +5 -0
  490. package/dist/tools/builtins/sandbox/deliver.js +180 -0
  491. package/dist/tools/builtins/sandbox/edit.d.ts +4 -0
  492. package/dist/tools/builtins/sandbox/edit.js +98 -0
  493. package/dist/tools/builtins/sandbox/glob-match.d.ts +25 -0
  494. package/dist/tools/builtins/sandbox/glob-match.js +240 -0
  495. package/dist/tools/builtins/sandbox/glob.d.ts +4 -0
  496. package/dist/tools/builtins/sandbox/glob.js +104 -0
  497. package/dist/tools/builtins/sandbox/grep.d.ts +9 -0
  498. package/dist/tools/builtins/sandbox/grep.js +133 -0
  499. package/dist/tools/builtins/sandbox/index.d.ts +12 -0
  500. package/dist/tools/builtins/sandbox/index.js +27 -0
  501. package/dist/tools/builtins/sandbox/names.d.ts +7 -0
  502. package/dist/tools/builtins/sandbox/names.js +20 -0
  503. package/dist/tools/builtins/sandbox/read.d.ts +8 -0
  504. package/dist/tools/builtins/sandbox/read.js +121 -0
  505. package/dist/tools/builtins/sandbox/write.d.ts +4 -0
  506. package/dist/tools/builtins/sandbox/write.js +88 -0
  507. package/dist/tools/builtins/skill-load.d.ts +53 -0
  508. package/dist/tools/builtins/skill-load.js +446 -0
  509. package/dist/tools/builtins/skill-write.d.ts +59 -0
  510. package/dist/tools/builtins/skill-write.js +244 -0
  511. package/dist/tools/builtins/tool-search.d.ts +31 -0
  512. package/dist/tools/builtins/tool-search.js +171 -0
  513. package/dist/tools/connector-content.controller.d.ts +34 -0
  514. package/dist/tools/connector-content.controller.js +78 -0
  515. package/dist/tools/connector-content.d.ts +104 -0
  516. package/dist/tools/connector-content.js +267 -0
  517. package/dist/tools/connectors.controller.d.ts +210 -0
  518. package/dist/tools/connectors.controller.js +234 -0
  519. package/dist/tools/connectors.service.d.ts +303 -0
  520. package/dist/tools/connectors.service.js +1102 -0
  521. package/dist/tools/credentials.d.ts +139 -0
  522. package/dist/tools/credentials.js +351 -0
  523. package/dist/tools/drift.d.ts +141 -0
  524. package/dist/tools/drift.js +539 -0
  525. package/dist/tools/elicitation.d.ts +81 -0
  526. package/dist/tools/elicitation.js +266 -0
  527. package/dist/tools/endpoint.d.ts +18 -0
  528. package/dist/tools/endpoint.js +115 -0
  529. package/dist/tools/info.d.ts +67 -0
  530. package/dist/tools/info.js +113 -0
  531. package/dist/tools/naming.d.ts +27 -0
  532. package/dist/tools/naming.js +47 -0
  533. package/dist/tools/oauth/discovery.d.ts +65 -0
  534. package/dist/tools/oauth/discovery.js +307 -0
  535. package/dist/tools/oauth/flow.d.ts +63 -0
  536. package/dist/tools/oauth/flow.js +237 -0
  537. package/dist/tools/oauth/oauth.controller.d.ts +31 -0
  538. package/dist/tools/oauth/oauth.controller.js +95 -0
  539. package/dist/tools/oauth/tokens.d.ts +111 -0
  540. package/dist/tools/oauth/tokens.js +258 -0
  541. package/dist/tools/outputs.d.ts +61 -0
  542. package/dist/tools/outputs.js +156 -0
  543. package/dist/tools/pipeline.d.ts +322 -0
  544. package/dist/tools/pipeline.js +1236 -0
  545. package/dist/tools/policy.d.ts +60 -0
  546. package/dist/tools/policy.js +236 -0
  547. package/dist/tools/questions.controller.d.ts +24 -0
  548. package/dist/tools/questions.controller.js +58 -0
  549. package/dist/tools/questions.service.d.ts +103 -0
  550. package/dist/tools/questions.service.js +295 -0
  551. package/dist/tools/redact.d.ts +20 -0
  552. package/dist/tools/redact.js +60 -0
  553. package/dist/tools/registry.d.ts +246 -0
  554. package/dist/tools/registry.js +481 -0
  555. package/dist/tools/resources.d.ts +16 -0
  556. package/dist/tools/resources.js +76 -0
  557. package/dist/tools/specs.d.ts +14 -0
  558. package/dist/tools/specs.js +31 -0
  559. package/dist/tools/validate.d.ts +20 -0
  560. package/dist/tools/validate.js +183 -0
  561. package/dist/tools/view.d.ts +43 -0
  562. package/dist/tools/view.js +225 -0
  563. package/dist/ui/embed-token.d.ts +31 -0
  564. package/dist/ui/embed-token.js +132 -0
  565. package/dist/ui/registry.d.ts +58 -0
  566. package/dist/ui/registry.js +90 -0
  567. package/dist/ui/ui-stream.d.ts +37 -0
  568. package/dist/ui/ui-stream.js +162 -0
  569. package/dist/ui/views.controller.d.ts +81 -0
  570. package/dist/ui/views.controller.js +261 -0
  571. package/dist/ui/views.d.ts +155 -0
  572. package/dist/ui/views.js +306 -0
  573. package/dist/version.d.ts +5 -0
  574. package/dist/version.js +6 -0
  575. package/package.json +69 -3
  576. package/src/migrations/0001_init.sql +8 -0
  577. package/src/migrations/0002_secrets.sql +8 -0
  578. package/src/migrations/0003_identity.sql +117 -0
  579. package/src/migrations/0004_plugin_org_config_nullable.sql +3 -0
  580. package/src/migrations/0005_agents.sql +27 -0
  581. package/src/migrations/0006_conversations.sql +37 -0
  582. package/src/migrations/0007_checkpoints.sql +26 -0
  583. package/src/migrations/0008_runs_trigger_seq.sql +3 -0
  584. package/src/migrations/0009_runs_active_unique.sql +4 -0
  585. package/src/migrations/0010_tools.sql +125 -0
  586. package/src/migrations/0011_approvals_spec.sql +10 -0
  587. package/src/migrations/0012_run_waits.sql +24 -0
  588. package/src/migrations/0013_app_tools_source.sql +4 -0
  589. package/src/migrations/0014_tool_specs.sql +8 -0
  590. package/src/migrations/0015_tool_drift.sql +20 -0
  591. package/src/migrations/0016_plugin_permissions.sql +11 -0
  592. package/src/migrations/0017_identity_sources.sql +6 -0
  593. package/src/migrations/0018_channels.sql +74 -0
  594. package/src/migrations/0019_identity_trust.sql +17 -0
  595. package/src/migrations/0020_channel_card_lookup.sql +10 -0
  596. package/src/migrations/0021_org_storage_purge.sql +9 -0
  597. package/src/migrations/0022_attachments.sql +29 -0
  598. package/src/migrations/0023_sandboxes.sql +37 -0
  599. package/src/migrations/0024_skills.sql +46 -0
  600. package/src/migrations/0025_skills_catalog_idx.sql +6 -0
  601. package/src/migrations/0026_skill_changes.sql +34 -0
  602. package/src/migrations/0027_model_prices.sql +18 -0
  603. package/src/migrations/0028_evals.sql +105 -0
  604. package/src/migrations/0029_model_purposes.sql +18 -0
  605. package/src/migrations/0030_plugin_installs.sql +73 -0
  606. package/src/migrations/0031_plugin_snapshot_source.sql +6 -0
  607. package/src/migrations/0032_plugin_deployment_configs.sql +10 -0
  608. package/src/migrations/0033_rename_apps_to_connectors.sql +25 -0
  609. package/src/migrations/0034_directory.sql +49 -0
  610. package/src/migrations/0035_catalogs.sql +40 -0
  611. package/src/migrations/0036_app_import_staging.sql +17 -0
  612. package/src/migrations/0037_directory_installs.sql +92 -0
  613. package/src/migrations/0038_channel_inbound_mode.sql +6 -0
  614. package/src/migrations/0039_channel_card_pending.sql +8 -0
  615. package/src/migrations/0040_usage_report_sweep.sql +10 -0
  616. package/src/migrations/0041_rename_plugins_to_extensions.sql +38 -0
  617. package/src/migrations/0042_rename_directory_to_catalog.sql +80 -0
  618. package/src/migrations/0043_rename_app_installs_to_plugin_installs.sql +20 -0
  619. package/src/migrations/0044_catalog_one_kind.sql +90 -0
  620. package/src/migrations/0045_plugin_dependencies.sql +9 -0
  621. package/src/migrations/0046_git_sources.sql +25 -0
  622. package/src/migrations/0047_marketplace_entry_heads.sql +7 -0
  623. package/src/migrations/0048_marketplace_entry_trees.sql +8 -0
  624. package/src/migrations/0049_plugin_upgrades.sql +37 -0
  625. package/src/migrations/0050_bootstrap.sql +53 -0
  626. package/src/migrations/0051_claude_compat.sql +26 -0
  627. package/src/migrations/0052_conversations_account_agent_idx.sql +5 -0
  628. package/src/migrations/0053_subagents.sql +73 -0
  629. package/src/migrations/0054_subagent_wait_expiry.sql +7 -0
  630. package/src/migrations/0055_subagent_parent_indexes.sql +10 -0
  631. package/src/migrations/0056_approval_reason.sql +3 -0
  632. package/src/migrations/0057_conversation_titles.sql +11 -0
  633. package/src/migrations/0058_conversation_selection.sql +4 -0
  634. package/src/migrations/0059_conversation_queue.sql +22 -0
  635. package/src/migrations/0060_file_previewers.sql +10 -0
  636. package/src/migrations/0061_queue_selection.sql +5 -0
  637. package/src/migrations/0062_queued_skill.sql +8 -0
@@ -0,0 +1,577 @@
1
+ import { type ExtensionManifest, type ExtensionPointRef, type ToolHandler, type ToolSpec, type UiContribution } from "@capybara-hq/plugin-sdk";
2
+ import type { core } from "zod";
3
+ import { type KernelDeps, type Route } from "../ctx/create-ctx.js";
4
+ import type { PluginRouteTable } from "../http/plugin-dispatch.js";
5
+ import type { UiActionHandler, UiRender } from "../ui/registry.js";
6
+ import { type PendingExtension } from "./approvals.js";
7
+ import { HookRegistry } from "./hooks.js";
8
+ import { type InflightTracker } from "./inflight.js";
9
+ import type { DesiredExtension } from "./installs.js";
10
+ import { type ExtensionInstance } from "./instance.js";
11
+ import { type PermissionSet } from "./permission-set.js";
12
+ import type { ExtensionSource, ReplicaStatusStore } from "./sources.js";
13
+ /**
14
+ * 插件部署配置(校验后)中非密钥部分的摘要:先把 schema 里所有 secret 叶子(`configFields` 可达路径,
15
+ * 加载时 `assertSecretsReachable` 已保证密钥都在这些路径上)换成固定占位值,再取 sha256(键排序 JSON) 前 16 位十六进制。
16
+ * 给需要「配置变了就失效」的缓存键用(如模型列表)。密钥不参与摘要:不加盐的短摘要写进 Redis 键名后,
17
+ * 低熵密钥可被离线猜测、泄露的密钥可被确认;代价是轮换密钥不会让缓存失效(缓存内容本来就不该依赖密钥)。
18
+ * 没有部署配置 schema 时无从得知哪些是密钥,摘要不按配置区分。同一份配置在各副本上得到同一摘要。
19
+ * 函数自己按 schema 遮蔽,调用方不必(也不能忘记)先打码。
20
+ */
21
+ export declare function deploymentConfigHash(schema: core.$ZodType | undefined, config: unknown): string;
22
+ /** One item of {@link ExtensionHost.uiContributions}: a UI contribution from the manifest with its registered view / action (embeds have none). */
23
+ export interface LoadedUiContribution {
24
+ plugin: string;
25
+ contribution: UiContribution;
26
+ render?: UiRender;
27
+ action?: UiActionHandler;
28
+ }
29
+ /** One item of {@link ExtensionHost.list}. */
30
+ export interface ExtensionPointEntry {
31
+ plugin: string;
32
+ capability: ExtensionPointRef;
33
+ impl: unknown;
34
+ /** 插件清单的 version。 */
35
+ version: string;
36
+ /** 部署配置摘要,见 {@link deploymentConfigHash}。 */
37
+ configHash: string;
38
+ /** 提供方实例的在途计数(connector / sandbox / model-provider 的 `impl` 已经包成计入它的代理)。 */
39
+ inflight: InflightTracker;
40
+ }
41
+ /** One item of {@link ExtensionHost.inspect}. */
42
+ export interface InspectedExtension {
43
+ /** Always `config`: the startup config `extensions` list. */
44
+ source: "config";
45
+ manifest: ExtensionManifest;
46
+ /** 插件模块所在目录(`migrations` 相对它解析)。 */
47
+ dir: string;
48
+ /** 规范化的权限集合,见 {@link computePermissionSet}。 */
49
+ permissions: PermissionSet;
50
+ }
51
+ /**
52
+ * 插件两级配置 schema 中的每个 `secret()` 都必须标在对象路径的字段上(见 `unreachableSecrets`),
53
+ * 否则内核无法把它单独加密存储 / 打码、会按明文保存与回显——此时拒绝加载并点名插件与路径。
54
+ */
55
+ export declare function assertSecretsReachable(manifest: ExtensionManifest): void;
56
+ /**
57
+ * The load entry for install records (C13 / C16): the records desired enabled, syncing to local disk
58
+ * (returns the entry URL) and migrating under the lock. Implemented by the kernel with
59
+ * `ExtensionInstalls` + `syncPackage` + `ensureMigrated`; the host calls it only after the
60
+ * config-declared extensions have loaded (the package may be in object storage, so the object-store
61
+ * extension must be ready).
62
+ */
63
+ export interface InstalledExtensionLoader {
64
+ desired(): Promise<DesiredExtension[]>;
65
+ sync(d: DesiredExtension): Promise<string>;
66
+ /**
67
+ * 该包的迁移(`dir` 为审阅过的 `capybara.migrations` 的绝对路径,没有迁移时为 undefined):
68
+ * 已迁移或本副本持锁迁移完成 → `migrated`;别的副本正在迁移 → `busy`(记 pending / migration,等
69
+ * `plugins.migrated` 或下一个周期);迁移出错时抛出。见 `ensureMigrated`。`signal` 在宿主关闭时中止(结束迁移会话)。
70
+ */
71
+ migrate(d: DesiredExtension, dir: string | undefined, signal: AbortSignal): Promise<"migrated" | "busy">;
72
+ }
73
+ /**
74
+ * 安装记录加载失败的原因(写进副本状态行的 `reason`,`detail` 只写错误消息):同步失败、包字节与 sha256 不符、
75
+ * 导入失败、模块清单与审阅过的静态清单不符、setup 失败、迁移失败。
76
+ */
77
+ export type InstallFailureReason = "sync_failed" | "sha_mismatch" | "import_failed" | "manifest_mismatch" | "setup_failed" | "migration_failed";
78
+ /** One item of {@link ExtensionHost.declaredPlugins}. */
79
+ export interface DeclaredExtensionInfo {
80
+ name: string;
81
+ source: "config";
82
+ version: string;
83
+ permissions: PermissionSet;
84
+ /** 清单有部署级配置 schema。 */
85
+ configurable: boolean;
86
+ /** 启动配置里的部署配置按 schema 校验通过(没有 schema 时恒为 true)。 */
87
+ configValid: boolean;
88
+ }
89
+ /** The extension sources of {@link ExtensionHost.load}, loaded in this order (see {@link ExtensionSource}). */
90
+ export interface ExtensionLoadPlan {
91
+ /** The startup config `extensions` list. */
92
+ config?: string[];
93
+ /** 安装记录。 */
94
+ installs?: InstalledExtensionLoader;
95
+ }
96
+ /** 插件宿主:解析、校验配置、迁移、setup,并登记插件提供的能力与路由。 */
97
+ export declare class ExtensionHost {
98
+ private readonly deps;
99
+ private readonly extensionConfig;
100
+ /**
101
+ * Only resolves extensions and runs migrations in dependency order: no deployment config check, no
102
+ * setup, no Redis (for `capybara migrate`). Like `load()` it checks secret markers first
103
+ * (`assertSecretsReachable`); if any extension has a problem, none is migrated.
104
+ * Returns every extension that declares migrations, with the files applied this time.
105
+ * The same permission snapshot gate as `load()`: extensions pending approval (and those whose
106
+ * `requires` only they satisfy) are not migrated and are reported through `onPending`; needs the
107
+ * kernel migrations to have run (reads `extension_permission_snapshots`). With `autoApprove` all are
108
+ * migrated and no snapshot is written (`load()` writes snapshots).
109
+ */
110
+ static migrateOnly(specifiers: string[], opts: {
111
+ dbUrl: string;
112
+ resolveFrom?: string;
113
+ connectTimeoutMs?: number;
114
+ autoApprove?: boolean;
115
+ onPending?: (pending: PendingExtension[]) => void;
116
+ }): Promise<{
117
+ plugin: string;
118
+ schema: string;
119
+ applied: string[];
120
+ }[]>;
121
+ /**
122
+ * The names of the config-declared extensions (`specifiers`, the startup config `extensions`
123
+ * list): imports their modules only (the same modules `load()` imports next, from Node's module
124
+ * cache). The kernel passes them to the bootstrap step before loading, so a bootstrap entry of
125
+ * the same name is kept and gets no install record (config wins, C15).
126
+ */
127
+ static declaredNames(specifiers: string[], opts?: {
128
+ resolveFrom?: string;
129
+ }): Promise<Set<string>>;
130
+ /**
131
+ * 只导入、校验并按依赖排序插件,计算各自的权限集合;不迁移、不调用 setup、不连数据库与 Redis
132
+ * (供 `capybara extensions review / approve`)。返回依赖拓扑序。
133
+ */
134
+ static inspect(specifiers: string[], opts?: {
135
+ resolveFrom?: string;
136
+ }): Promise<InspectedExtension[]>;
137
+ /** 本进程生效的插件实例(C17):消费方每次实时取,不缓存实现对象。 */
138
+ private readonly registry;
139
+ /**
140
+ * M-1: plugin → mount points where deployment state expects `policy` hooks. A per-replica copy of PG
141
+ * deployment state (like the registry), rebuilt on every load / converge, never written elsewhere.
142
+ */
143
+ private policyExpected;
144
+ /**
145
+ * Runs the hooks of this process's active plugin instances (resolved from the registry on every
146
+ * call, so an upgrade fires only the new generation; calls go through each instance's in-flight
147
+ * tracker and are drained on revocation). Organization enablement is {@link enabledPlugins}.
148
+ */
149
+ readonly hooks: HookRegistry;
150
+ /** 加载成功过的插件的加载参数(同进程重新加载用;撤销后保留,`unavailable` 据此判断)。 */
151
+ private readonly specs;
152
+ /** 因必需能力没了而随提供方卸下的插件:提供方回来后重新加载。 */
153
+ private readonly unloadedForDependency;
154
+ /** 每个插件已产生的实例代数。 */
155
+ private readonly generations;
156
+ /** 本进程导入过的模块入口(不同入口数超过阈值时告警:旧代码留在内存直到重启)。 */
157
+ private readonly imports;
158
+ /** 串行化 unload / reload(同一时刻只做一件,依赖方的连锁处理不交错)。 */
159
+ private lifecycle;
160
+ private readonly drainMs;
161
+ private readonly disposeTimeoutMs;
162
+ private readonly reloadSetupTimeoutMs;
163
+ private readonly installedNames;
164
+ /** 安装记录里的插件名缓存(TTL + 注册表变化时作废)。 */
165
+ private installedCache;
166
+ /** 本次因权限待批准(或依赖待批准插件)而未加载的插件。 */
167
+ private readonly pendingPlugins;
168
+ /**
169
+ * 待批准(或运行中加载失败)的配置声明插件的加载参数:{@link activatePending} / {@link converge} 据此重试。
170
+ * 安装记录不在这里:每次 converge 都按 PG 期望状态重新判定。
171
+ */
172
+ private readonly pendingActivations;
173
+ /** 安装记录准备好的候选(按插件名;sha 变了就作废)。 */
174
+ private readonly prepared;
175
+ /** 闸门放行后导入过的安装记录真实清单(按插件名;部署配置 schema 用,含待配置而未加载的)。 */
176
+ private readonly importedManifests;
177
+ /** 本副本写过状态行的安装记录插件(停用 / 卸载后把未加载的那行标为 unloaded)。 */
178
+ private readonly installRows;
179
+ /** 启用的安装记录按静态清单声明提供的能力(最近一次 {@link applyInstalls};待定插件的 blockedBy 用)。 */
180
+ private installProvides;
181
+ /** 已记过 error 日志的加载失败(插件名 → `<sha>:<原因>`;加载成功后清掉)。 */
182
+ private readonly loggedFailures;
183
+ /** 已告警过的「安装记录与配置声明重名」(每个名字只告警一次)。 */
184
+ private readonly warnedConflicts;
185
+ /** 升级时被替换、后台排空中的旧实例(close() 等它们,最多 lifecycleWaitMs)。 */
186
+ private readonly retiring;
187
+ /** 配置声明插件的清单与权限集合(含未加载的;后台列表与网页批准用)。 */
188
+ private readonly declaredInfo;
189
+ /** 导入过的插件名 → 来源与包(含未加载的;重名被跳过的一方不在这里)。 */
190
+ private readonly sources;
191
+ private didLoad;
192
+ /** load() 的安装记录入口({@link converge} 据此按 PG 期望状态收敛)。 */
193
+ private installLoader;
194
+ private closed;
195
+ /** close() 时中止进行中的插件迁移。 */
196
+ private readonly abort;
197
+ /** 进行中的插件迁移(close() 等它结束,保证迁移连接不比宿主活得久)。 */
198
+ private migrating;
199
+ /** 已创建、尚未登记(setup 进行中)的 ctx:close() 时立即关闭,不等 setup 返回。 */
200
+ private settingUp;
201
+ private readonly resolveFrom;
202
+ private readonly onSecrets;
203
+ private readonly autoApprove;
204
+ private readonly status;
205
+ private readonly storedConfig;
206
+ /** 配置声明插件的部署配置最近一次判定是否合法(后台列表用;没判定过时按启动配置校验)。 */
207
+ private readonly configValidity;
208
+ /** 已告警过的「部署配置不合法」(插件名 → 说明;每个周期都会重新判定,同一说明只告警一次)。 */
209
+ private readonly configWarned;
210
+ /**
211
+ * @param opts.resolveFrom The directory bare package names are resolved from, default
212
+ * `process.cwd()`; a relative path is made absolute against the cwd at construction.
213
+ * Absolute paths and `file:` URL extension specifiers are used as they are;
214
+ * bare package names are resolved with `createRequire(<resolveFrom>/noop.js).resolve`, so an
215
+ * extension package's exports must expose the `default` (or `require`) condition.
216
+ * @param opts.autoApprove Approve extension permissions automatically (config
217
+ * `extensionPermissions.autoApprove`, development and trials only): extensions needing approval write a
218
+ * snapshot with source auto and load as usual. Default false: extensions pending approval do not
219
+ * load (see {@link pending}).
220
+ * @param opts.status This replica's load status table (`extension_replica_status`): every
221
+ * extension's load result writes a row.
222
+ */
223
+ constructor(deps: KernelDeps, extensionConfig?: Record<string, unknown>, opts?: {
224
+ resolveFrom?: string;
225
+ onSecrets?: (values: string[]) => void;
226
+ autoApprove?: boolean;
227
+ status?: ReplicaStatusStore;
228
+ /** 撤销实例时在途调用的排空时限(毫秒),默认 30s;内核传 `extensionHost.drainSeconds`。 */
229
+ drainMs?: () => number;
230
+ /** 插件 `dispose()` 的时限(毫秒),默认 10s;内核传 `extensionHost.disposeTimeoutSeconds`。 */
231
+ disposeTimeoutMs?: () => number;
232
+ /** 运行中重新加载时 setup 的时限(毫秒),默认 60s;内核传 `extensionHost.reloadSetupTimeoutSeconds`。 */
233
+ reloadSetupTimeoutMs?: () => number;
234
+ /** Hook time limit in milliseconds, default 5 s; the kernel passes `hooks.timeoutMs` (hot). */
235
+ hookTimeoutMs?: () => number;
236
+ /**
237
+ * 安装记录里的插件名(T11 安装记录,任何 desired_state):与配置声明的一起构成「部署已知」的插件,
238
+ * 不在本副本生效时它们的路由返回 503,完全未知的名字 404。缓存 {@link KNOWN_NAMES_TTL_MS}。
239
+ */
240
+ installedNames?: () => Promise<string[]>;
241
+ /**
242
+ * The extension's effective deployment config (C10): the startup config (`fileValue`, file /
243
+ * Nacos merged with env) plus the fields stored in PG
244
+ * (`ExtensionDeploymentConfigService.effective`), not validated yet. Without it only the startup
245
+ * config is used.
246
+ */
247
+ deploymentConfig?: (plugin: string, fileValue: unknown, schema: core.$ZodType | undefined) => Promise<unknown>;
248
+ });
249
+ /**
250
+ * Imports each extension module (default export) and initializes them in dependency order; may be
251
+ * called only once. An array is the same as `{ config: [...] }`.
252
+ *
253
+ * Order (C15 / C13; the bootstrap plugins that replaced builtin extensions are install records):
254
+ * 1. Config-declared extensions: not loaded while pending approval; an invalid deployment config is
255
+ * recorded `pending` (reason config, C10) and the kernel starts as usual; a failed
256
+ * migration or setup throws and the kernel fails to start.
257
+ * When an extension point in `requires` did not load because its provider is pending
258
+ * configuration or similar, it is recorded pending (dependency) and converge loads it once the
259
+ * provider has loaded.
260
+ * Deployment config = the startup config (`extensionConfig`) plus the fields stored in PG (constructor
261
+ * parameter `deploymentConfig`, C10).
262
+ * A config-declared extension whose `requires` can
263
+ * only be satisfied by an install record is set aside and resolved and loaded after step 2
264
+ * together with the loaded extensions (step 3; still unsatisfied -> it throws as before).
265
+ * 2. Install records (`plan.installs`): synced to local disk, the permission set computed from the
266
+ * reviewed static manifest and migration SQL, dependencies resolved together with the existing
267
+ * extensions, then the same permission gate in topological order; only after passing is the module
268
+ * imported and the static manifest checked (name and `capybara.manifest` must both match,
269
+ * otherwise failed / manifest_mismatch), so no extension code runs before approval; migration
270
+ * directories come only from the reviewed `capybara.migrations`; a failure at any step only marks
271
+ * that extension failed (or pending), the rest go on. On a name clash with a
272
+ * config-declared extension the latter wins, with a warning.
273
+ * Every extension's result is written to this replica's `extension_replica_status` (when `status`
274
+ * was given at construction).
275
+ * Instances that loaded are registered in the registry (C17): from then on {@link unload} /
276
+ * {@link reload} revoke or reload them in this process.
277
+ *
278
+ * When a config-declared extension's (trusted) setup never returns, load() (and so the
279
+ * kernel's `start()`) hangs forever: the kernel sets no timeout for them; `close()` / the kernel's
280
+ * `stop()` still close that extension's ctx right away and free its resources. Install records are
281
+ * not trusted: at startup their setup is also limited by `extensionHost.reloadSetupTimeoutSeconds`
282
+ * (timeout -> failed / setup_failed) and migrations by `extensionHost.migrationTimeoutSeconds` (see
283
+ * `ensureMigrated`).
284
+ * When the host is `close()`d during load: running migrations are aborted, the ctx in setup is closed
285
+ * right away (its queue's define / add then throw `queue is closed`), and load() throws
286
+ * `plugin host closed during load` at the next checkpoint.
287
+ */
288
+ load(plan: string[] | ExtensionLoadPlan): Promise<void>;
289
+ /**
290
+ * Config-declared extensions also take their name (I4, an addition to Ruling P3): the
291
+ * name is inserted into `extension_name_owners` with its npm package name (left alone when present).
292
+ * After it is removed from the config list, no other npm package can install an extension of the
293
+ * same name and take over its data, secrets and approvals. A failed write only warns.
294
+ */
295
+ private claimNames;
296
+ /**
297
+ * 启动时按拓扑序加载:权限闸门放行、但 `requires` 的能力此刻没有生效的提供方(提供方待配置等没加载成)→
298
+ * 改为待定(dependency,blockedBy 点名待定的提供方),提供方加载后由 {@link converge} 一并加载。
299
+ */
300
+ private blockedByUnloaded;
301
+ /**
302
+ * 插件此刻的部署配置(未校验):启动配置补上 PG 里保存的字段(C10,见构造参数 `deploymentConfig`)。
303
+ */
304
+ private rawConfigOf;
305
+ /** 把一份已校验部署配置里的密钥值交给 onSecrets(日志打码)。 */
306
+ private reportSecrets;
307
+ /**
308
+ * 安装记录收敛到 PG 期望状态(启动第 3 步与运行中的 {@link converge} 共用,C16);`desired` 为期望启用的记录。
309
+ * 1. 不再期望启用的(停用 / 卸载):卸下(排空在途调用),未加载但写过状态行的标为 unloaded;
310
+ * 2. 期望启用、本副本已在目标包上的:不动;
311
+ * 3. 其余:准备候选(同步 → 按静态清单与迁移 SQL 算权限集合;失败记 failed:`sync_failed` / `sha_mismatch`),
312
+ * 与生效的插件一起按依赖拓扑序逐个处理:权限闸门(新增权限待批准 → pending / approval,旧实例照常)、
313
+ * 必需能力(此刻没有生效的提供方 → pending / dependency)、导入模块并核对静态清单(`import_failed` /
314
+ * `manifest_mismatch`;闸门放行之前不导入)、部署配置、
315
+ * 持锁迁移(busy → pending / migration)、setup,成功后登记新实例(先加载新、再撤销旧:旧实例在后台排空后撤销);
316
+ * 任何一步失败旧实例保留,记 failed(`migration_failed` / `setup_failed`)。
317
+ * 4. 运行中(非启动):对变了的能力做依赖方连锁(本轮刚加载的除外),此前因依赖卸下的插件随之补回。
318
+ * 返回启用的安装记录在静态清单里声明提供的能力(启动第 4 步据此判断待定还是缺提供方)。
319
+ */
320
+ private applyInstalls;
321
+ /**
322
+ * The load candidate of an install record: sync it locally, then compute the permission set from
323
+ * the reviewed static manifest and the package's migration SQL (the same algorithm as
324
+ * `permissionSetOfPackage` at review; the migrations directory comes only from
325
+ * `extension.migrations`). Does not import the module: that happens after the permission gate
326
+ * ({@link importInstalled}). A failure is recorded as failed (`sync_failed` / `sha_mismatch`, the
327
+ * detail is the error message only, e.g. the legacy-format message for a pre-0.1.0 package) and
328
+ * returns undefined. The result for a package never changes, so successes are cached by sha (a
329
+ * reconcile cycle does not unpack again).
330
+ */
331
+ private prepare;
332
+ /**
333
+ * 权限闸门放行后导入安装记录的真实模块(模块顶层代码此时才执行)并核对:密钥标记、与审阅过的静态清单一致
334
+ * (名字、版本、能力、权限、界面、配置字段;不一致抛 {@link ManifestMismatchError})。同一入口 URL 由 Node 模块缓存,
335
+ * 重复调用不重复执行顶层代码。导入限 `extensionHost.reloadSetupTimeoutSeconds`(与 setup 同一时限):顶层代码
336
+ * 永不结束时记 failed / import_failed,不卡住启动与 reconcile(挂住的模块留在内存里,下次导入同样超时)。
337
+ */
338
+ private importInstalled;
339
+ /**
340
+ * 安装记录加载失败的 error 日志:每个周期都会重试,同一个包、同一个原因只记一次(状态行每次照写)。
341
+ */
342
+ private logFailure;
343
+ /** 记下(替换同名的)待定插件,供 {@link pending} 列出。 */
344
+ private notePending;
345
+ /** 从待定清单里去掉。 */
346
+ private dropPending;
347
+ /**
348
+ * 第 4 步:第 2 步挑出来的配置声明插件(`requires` 只能由安装记录满足)。与已加载的插件一起解析依赖:
349
+ * - 满足的按拓扑序走同一道权限闸门后加载(出错直接抛,与其他配置声明插件一致);
350
+ * - 缺的能力有启用的安装记录声明提供、只是它没加载成(待批准 / 失败)→ 待定(pending,原因 dependency),
351
+ * 与「配置声明插件依赖待批准的配置声明插件」一致,内核照常启动;
352
+ * - 缺的能力没有任何提供方 → 与此前一样抛错(内核启动失败)。
353
+ */
354
+ private loadDeferred;
355
+ /** 给已有状态行补说明;失败只记 warn。 */
356
+ private noteStatus;
357
+ /**
358
+ * 写本副本的加载状态;失败只记 warn(状态是给后台看的,不影响加载)。这一行的版本没加载成(failed / pending)
359
+ * 而本副本仍有别的版本在跑时,记下那个版本(`servingVersion`,后台同时显示「新版失败、旧版仍在服务」)。
360
+ */
361
+ private writeStatus;
362
+ /**
363
+ * 加载一个插件:权限闸门结论、部署配置、迁移、setup、登记。`fatal` 时(配置声明)出错直接抛;
364
+ * 否则(安装记录)记 failed 后返回。部署配置不合法时(任何来源)只记 pending(reason config),不抛(C10)。
365
+ * 已有同名实例时(升级):新实例登记后旧实例才撤销(后台排空在途调用);新实例没加载成时旧实例保持不变。
366
+ * 返回新登记的实例(没有加载时返回 undefined)。
367
+ */
368
+ private activate;
369
+ /**
370
+ * 后台撤销被替换的旧实例(排空在途调用,最多 `extensionHost.drainSeconds`):不挡住本副本后续的生命周期操作。
371
+ * close() 等它们(最多 lifecycleWaitMs)。
372
+ */
373
+ private retire;
374
+ /** 记下配置声明插件的清单与权限集合(安装记录不在这里)。 */
375
+ private noteDeclared;
376
+ /**
377
+ * 配置声明的插件(含待批准、待配置而未加载的):权限集合({@link computePermissionSet})、
378
+ * 部署配置此刻是否合法(按清单的 deployment schema 校验启动配置)。按导入顺序。
379
+ */
380
+ declaredPlugins(): DeclaredExtensionInfo[];
381
+ /**
382
+ * 在本副本加载此刻能加载的待定配置声明插件(批准之后,或运行中加载失败后的重试),见 {@link converge}。
383
+ * 与 unload / reload 串行。返回本次加载的插件名。
384
+ */
385
+ activatePending(): Promise<string[]>;
386
+ /**
387
+ * 本副本收敛到部署的期望状态(T14 reconcile 的一步,与 unload / reload 串行):
388
+ * 1. 待定的配置声明插件(批准后、或运行中加载失败的)按此刻的快照与生效的提供方重试;
389
+ * 2. 安装记录按 PG 期望状态收敛(见 {@link applyInstalls}:停用 / 卸载的卸下,换包的先加载新再撤销旧,
390
+ * 失败的每次重试),之后做依赖方连锁;
391
+ * 3. 再试一次第 1 步(安装记录提供的能力可能放行了依赖它的配置声明插件)。
392
+ * 读不到安装记录时只做第 1 步并抛错(调用方记日志,下一个周期再来)。
393
+ */
394
+ converge(): Promise<void>;
395
+ /**
396
+ * Refreshes {@link policyExpected} from deployment state (M-1):
397
+ * config-declared plugins and enabled installs (`desired`) from their approved permission snapshot.
398
+ * `desired` undefined (install records unreadable) keeps the previous install entries.
399
+ * `shrinkOnly`: only remove entries (a plugin no longer desired or approved), never add new ones.
400
+ */
401
+ private refreshPolicyExpectations;
402
+ /**
403
+ * Plugins that deployment state expects to run `policy` hooks on the mount point (M-1): enabled and
404
+ * approved, with the mount in `permissions.policyHooks`. In-process, no I/O (see
405
+ * {@link refreshPolicyExpectations}); the hook registry fails calls closed for those not loaded here.
406
+ */
407
+ expectedPolicy(mount: string): string[];
408
+ /**
409
+ * 待定的配置声明插件({@link pendingActivations}):重读快照,按启动时同一套判定({@link planApprovals},
410
+ * 另加「必需能力此刻要有生效的提供方」)逐个处理;能加载的走与启动相同的加载流程(部署配置、迁移、setup,
411
+ * setup 时限 `extensionHost.reloadSetupTimeoutSeconds`),失败只记 failed、留着下次重试(T13 → T14 交接);
412
+ * 仍被依赖阻塞的改记 pending / dependency。反复直到不动点(加载一个可能放行依赖它的),
413
+ * 最后对新提供的能力做依赖方连锁(与 {@link reload} 相同)。
414
+ */
415
+ private activatePendingNow;
416
+ /**
417
+ * 待批准插件此刻的判定:已生效的(同名实例除外:升级时按新权限集合比对快照)视为已批准;必需能力没有生效的
418
+ * 提供方时仍待定(dependency)。`providers` 给出能力 → 声明提供它但没生效的安装记录(填 blockedBy)。
419
+ */
420
+ private decidePending;
421
+ /** 仍不能加载的待批准插件:原因变了(如已批准、只剩依赖阻塞)时更新待批准清单与副本状态。 */
422
+ private stillPending;
423
+ /** 插件的来源(导入过的;未知返回 undefined)。 */
424
+ sourceOf(plugin: string): ExtensionSource | undefined;
425
+ /** 配置声明的插件名 → 来源(安装包不能与它们重名)。 */
426
+ declared(): Map<string, ExtensionSource>;
427
+ /**
428
+ * Extensions enabled in the org: `extension_org_configs.enabled` plus every required bootstrap
429
+ * plugin (see `enabled.ts`); queried every time, not cached.
430
+ * Cost (M-4): hooks call this on every run, so one PG query per model attempt and per tool call.
431
+ * Acceptable for now; if a cache is ever added, give it a short TTL so an org disabling a plugin
432
+ * takes effect quickly.
433
+ */
434
+ enabledPlugins(orgId: string): Promise<Set<string>>;
435
+ /**
436
+ * The access behind an extension's `ctx.extensionPoints`: only active instances in the registry
437
+ * (dependencies load in topological order, so the depended-on are ready first); org enablement is
438
+ * read from `extension_org_configs` every time, not cached. Resolved live on every call: once a
439
+ * provider is revoked it is no longer returned.
440
+ */
441
+ private readonly extensionPointAccess;
442
+ private get loadDeps();
443
+ /**
444
+ * 按加载参数建一个新实例(setup 期间的 ctx 记在 `settingUp`,close() 时立即关闭)。
445
+ * `timeoutMs`(运行中重新加载):setup 超时或宿主被关闭时关闭这个 ctx 并抛错;迟到完成的实例随即撤销。
446
+ * 配置声明的插件启动时不设时限(见 {@link load})。
447
+ */
448
+ private setup;
449
+ /** 取能力实现:单选能力无需 providerName,多选能力必须指定。 */
450
+ get<T>(capability: ExtensionPointRef, providerName?: string): T;
451
+ /**
452
+ * 列出提供某能力(任意主版本)的所有插件及实现;`capability` 为完整引用(含主版本),
453
+ * 同一插件提供多个主版本时各占一项,由调用方按主版本选择。
454
+ * 每项带插件版本与部署配置摘要({@link deploymentConfigHash}),供调用方做「插件升级 / 改配置即失效」的缓存键。
455
+ * 实时取自注册表:调用方不要缓存实现对象(插件撤销 / 升级后旧实现不再有效)。
456
+ */
457
+ list(extensionPointName: string): ExtensionPointEntry[];
458
+ /**
459
+ * 已加载插件的部署配置(已按清单 schema 校验,含密钥),供内核调用该插件的能力时作为 `config` 传回
460
+ * (如 `identity-source@1` 的登录配置);未加载返回 undefined。不得回显到响应或日志。
461
+ */
462
+ deploymentConfig(plugin: string): unknown;
463
+ /**
464
+ * 本副本拿得到的插件清单里的部署级 schema(生效实例 → 配置声明 → 安装记录准备好的候选);
465
+ * 都没有返回 undefined(如未加载的安装记录:调用方改用包内静态清单)。
466
+ */
467
+ deploymentSchema(plugin: string): {
468
+ version: string;
469
+ schema: core.$ZodType | undefined;
470
+ } | undefined;
471
+ /** 在本副本生效、声明了部署级配置的插件。 */
472
+ configurablePlugins(): string[];
473
+ /**
474
+ * 部署配置保存后(`kernel.plugin-deployment-config`)本副本重读并校验(C10;与 unload / reload 串行):
475
+ * - 插件没在本副本生效 → `not_loaded`(配置声明的刷新后台的合法性判定;待配置的由 reconcile 加载);
476
+ * - 不合法 → `invalid`:保持当前值,告警;
477
+ * - 没变 → `unchanged`;只改了 hot 字段 → `hot`:就地替换,插件经 `ctx.config` 读到新值,不重新 setup;
478
+ * - 改了非 hot 字段 → `reload`:用新配置重新加载实例(先新后旧,排空在途调用),依赖方连锁;
479
+ * 重新加载失败旧实例保留(`reload_failed`,记 error)。
480
+ */
481
+ applyDeploymentConfig(plugin: string): Promise<"not_loaded" | "invalid" | "unchanged" | "hot" | "reload" | "reload_failed">;
482
+ /** 本次未加载、等待批准权限的插件(含因 `requires` 只能由它们满足而未加载的插件),按依赖拓扑序。 */
483
+ pending(): PendingExtension[];
484
+ /** 已加载插件的清单(按加载顺序,即依赖拓扑序)。 */
485
+ manifests(): ExtensionManifest[];
486
+ /** 已加载插件的权限集合(加载时计算,清单不可变);未加载返回 undefined。 */
487
+ permissionSet(plugin: string): PermissionSet | undefined;
488
+ /** 生效的插件实例;未加载 / 已撤销返回 undefined。 */
489
+ current(plugin: string): ExtensionInstance | undefined;
490
+ /** 生效的插件实例(按加载顺序)。 */
491
+ instances(): ExtensionInstance[];
492
+ /**
493
+ * Route gate: the extension belongs to this deployment (config-declared, or an install
494
+ * record in PG) but is not active on this replica right now -> true, and its `/plugins/<name>/*` and
495
+ * `/plugin-ui/<name>/*` answer 503 `extension.unavailable` (the routes stay mounted and only gate);
496
+ * active, or a completely unknown name -> false (unknown is a plain 404). Looks only at what the
497
+ * deployment knows, not at this process's load history. Install record names are cached for
498
+ * {@link KNOWN_NAMES_TTL_MS} and invalidated on registry changes; when they cannot be read the name
499
+ * counts as unknown (404).
500
+ */
501
+ unavailable(plugin: string): Promise<boolean>;
502
+ /**
503
+ * 作废路由闸门的安装记录名字缓存(收到 `kernel.plugins.changed` 时各副本调用:卸载 / 新装后不等 TTL)。
504
+ */
505
+ invalidateKnownNames(): void;
506
+ /** 安装记录里的插件名(缓存,见 {@link unavailable})。 */
507
+ private installed;
508
+ /** Subscribes to registry changes (activated / replaced / removed, the argument is the extension name): this process only, see {@link ExtensionRegistry.onChange}. */
509
+ onChange(listener: (name: string) => void): () => void;
510
+ /** 插件路由表(给 HTTP 的插件转发用):实时路由、注册表版本、闸门与变化通知(中止该插件进行中的请求)。 */
511
+ routeTable(): PluginRouteTable;
512
+ /** 所有插件注册的 HTTP 路由(路径已带 `/plugins/<name>` 前缀)。 */
513
+ routes(): Route[];
514
+ /**
515
+ * 所有插件经 `ctx.tools.register` 注册的工具(按加载顺序、注册顺序),附带实例的在途计数:
516
+ * 执行时经 `inflight.run` 调用 handler,实例撤销时排空 / 中止。
517
+ */
518
+ tools(): {
519
+ plugin: string;
520
+ spec: ToolSpec;
521
+ handler: ToolHandler;
522
+ inflight: InflightTracker;
523
+ }[];
524
+ /**
525
+ * 已加载插件清单里的界面贡献(按加载顺序、清单顺序),附带 setup 期间注册的视图 render / 动作处理函数。
526
+ * 是否在某组织启用由调用方另查(每次查询,不缓存)。
527
+ */
528
+ uiContributions(): LoadedUiContribution[];
529
+ /** 串行执行生命周期操作(unload / reload 互不交错);宿主关闭后拒绝。 */
530
+ private serial;
531
+ /**
532
+ * 撤销一个插件(本副本,C17):从注册表摘下(此后新请求取不到它)、排空在途调用(最多 `drainMs`,
533
+ * 默认 `extensionHost.drainSeconds`)、逐项撤销登记、调插件 `dispose`(最多 `extensionHost.disposeTimeoutSeconds`)。连锁:
534
+ * - `requires` 它提供的能力、且该能力已没有其他提供方的插件随之卸下(状态 `unloaded`、原因 `dependency`),
535
+ * 提供方回来后({@link reload})自动重新加载;
536
+ * - 其余 `requires` / `optional` 它提供的能力的插件(含间接依赖)在本副本按拓扑序各重新加载一次。
537
+ * 返回卸下的插件名(含连锁卸下的);插件不在注册表时返回空数组。宿主关闭后拒绝。
538
+ */
539
+ unload(plugin: string, opts?: {
540
+ drainMs?: number;
541
+ }): Promise<string[]>;
542
+ /**
543
+ * 用同一份加载参数(同一模块入口、部署配置与权限)新建一个实例并原子替换(同进程重新加载 / 撤销后重新启用):
544
+ * 新实例 setup 成功后才登记(setup 最多 `extensionHost.reloadSetupTimeoutSeconds`),旧实例随后撤销(排空在途调用);
545
+ * setup 失败或超时时旧实例保持不变并抛错。依赖它的插件在本副本按拓扑序各重新加载一次;此前因它卸下的依赖方重新加载。
546
+ * 同一入口的重新加载不新增模块代码;升级到新入口(T14)的模块代码留在内存直到进程重启,不同入口数超过阈值时告警。
547
+ * 宿主关闭后拒绝。
548
+ */
549
+ reload(plugin: string, opts?: {
550
+ drainMs?: number;
551
+ }): Promise<ExtensionInstance>;
552
+ /** 摘下并撤销一个实例(不做连锁);不在注册表时返回 undefined。 */
553
+ private doUnload;
554
+ /** 新建实例并原子替换、撤销旧实例(不做连锁)。 */
555
+ private doReload;
556
+ /** 生效实例按依赖拓扑排序(解析不了时退回注册表顺序)。 */
557
+ private topoOrder;
558
+ /**
559
+ * 提供方实例变了(撤销 / 替换)之后的连锁:先一次性收集受影响的插件(`requires` / `optional` 这些能力的,
560
+ * 以及间接依赖它们的——菱形依赖只收一次),再按拓扑序逐个处理:必需能力已无提供方的卸下(dependency),
561
+ * 其余重新加载一次。最后把此前因依赖卸下、现在能满足的插件加回来。返回连锁卸下的插件名。
562
+ * `skip`:本轮刚加载的插件(已按新的提供方 setup,不再重新加载)。
563
+ */
564
+ private cascade;
565
+ /** 撤销实例;失败只记 error(已从注册表摘下,不影响其余)。 */
566
+ private disposeQuietly;
567
+ /**
568
+ * 按加载顺序(拓扑序)逆序串行撤销各插件:依赖方先于被依赖方。停机路径:不排空在途调用(运行此时已停),
569
+ * 队列 worker 等进行中的任务结束。调用后宿主进入 closed 状态(幂等),此后 unload / reload 拒绝。
570
+ * 进行中的 `load()`:迁移被中止并等其连接结束,setup 中的 ctx 被立即关闭(不等 setup 返回),load() 随后在检查点放弃。
571
+ * 进行中的 unload / reload 最多等 `lifecycleWaitMs`(默认 2s;卡住的 setup / dispose 不拖住停机),
572
+ * 之后关闭 setup 中的 ctx、撤销其余实例。单个插件关闭失败记 error 后继续关闭其余插件。
573
+ */
574
+ close(opts?: {
575
+ lifecycleWaitMs?: number;
576
+ }): Promise<void>;
577
+ }