@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,100 @@
1
+ /** 组织默认语言(`orgs.settings.locale`)。 */
2
+ export type ChannelLocale = "zh" | "en";
3
+ /**
4
+ * 机器人在 IM 里说的固定话术(全部集中在这里,zh / en 同步):按连接所属组织的默认语言选择。
5
+ * 模型回复不经过这里,原样转换为 IM 富文本、不翻译。
6
+ */
7
+ export declare const CHANNEL_PHRASES: {
8
+ /** 私聊 `/new` 之后。 */
9
+ readonly newConversation: {
10
+ readonly zh: "已开始新对话";
11
+ readonly en: "Started a new conversation.";
12
+ };
13
+ /** 未绑定的人在私聊里发消息:附绑定卡片。 */
14
+ readonly bindPrompt: {
15
+ readonly zh: "请先绑定你的 Capybara 账号,再与我对话。";
16
+ readonly en: "Please link your Capybara account before chatting with me.";
17
+ };
18
+ /** 未绑定的人在群里 @ 机器人:绑定链接只在私聊里发(群里谁都能点)。 */
19
+ readonly bindInDm: {
20
+ readonly zh: "请先私聊我,绑定你的 Capybara 账号。";
21
+ readonly en: "Please send me a direct message to link your Capybara account first.";
22
+ };
23
+ /** 无法生成绑定链接(部署未配置 http.publicUrl)。 */
24
+ readonly bindUnavailable: {
25
+ readonly zh: "暂时无法识别你的身份,请联系管理员。";
26
+ readonly en: "I can't identify you yet. Please contact an administrator.";
27
+ };
28
+ /** 已绑定账号但不是该组织成员。 */
29
+ readonly notMember: {
30
+ readonly zh: "你的账号不是该组织的成员,请联系管理员。";
31
+ readonly en: "Your account is not a member of this organization. Please contact an administrator.";
32
+ };
33
+ /** 匿名策略下,连接绑定的 agent 不是全组织可见。 */
34
+ readonly anonymousNotAllowed: {
35
+ readonly zh: "此助手不对匿名访客开放,请联系管理员。";
36
+ readonly en: "This assistant is not available to anonymous guests. Please contact an administrator.";
37
+ };
38
+ /** 连接绑定的 agent 对此人不可用(可见范围不含此人、已删除)。 */
39
+ readonly agentUnavailable: {
40
+ readonly zh: "你无权使用此助手,请联系管理员。";
41
+ readonly en: "You don't have access to this assistant. Please contact an administrator.";
42
+ };
43
+ /** 卡片操作:点击者不是审批人 / 不是提问的发起人(或请求不在该组织)。 */
44
+ readonly cannotHandle: {
45
+ readonly zh: "你不能处理这条请求。";
46
+ readonly en: "You can't handle this request.";
47
+ };
48
+ /** 卡片操作:请求已被处理、已过期或已取消。 */
49
+ readonly alreadyHandled: {
50
+ readonly zh: "这条请求已经处理过了。";
51
+ readonly en: "This request has already been handled.";
52
+ };
53
+ /** 卡片操作:回答不符合表单,或审批范围不允许。 */
54
+ readonly invalidAction: {
55
+ readonly zh: "无法完成这个操作,请到网页上处理。";
56
+ readonly en: "That action isn't valid here. Please handle it on the web.";
57
+ };
58
+ /** 审批卡片的标题与随附文本。 */
59
+ readonly approvalTitle: {
60
+ readonly zh: "需要你的批准";
61
+ readonly en: "Approval required";
62
+ };
63
+ /** 提问卡片的随附文本。 */
64
+ readonly questionTitle: {
65
+ readonly zh: "需要你的回答";
66
+ readonly en: "Your input is needed";
67
+ };
68
+ /** 连接卡片的随附文本。 */
69
+ readonly connectTitle: {
70
+ readonly zh: "需要先完成连接器授权";
71
+ readonly en: "A connector needs to be connected first";
72
+ };
73
+ /** 部署未配置 http.publicUrl,无法给出网页链接与卡片时的退回文本。 */
74
+ readonly handleOnWeb: {
75
+ readonly zh: "有一条请求需要你到 Capybara 网页上处理。";
76
+ readonly en: "A request is waiting for you in Capybara on the web.";
77
+ };
78
+ /**
79
+ * Phase D: `/name args` named an invocable skill, but the kernel refused to render it
80
+ * (`validation_failed`: arguments or the rendered skill over the limits); the message was posted
81
+ * as typed instead (batch 4 review m2).
82
+ */
83
+ readonly skillNotRun: {
84
+ readonly zh: "技能没有运行:参数或技能内容过长。你的消息已按普通文本发送。";
85
+ readonly en: "The skill was not run: its arguments or instructions are too long. Your message was sent as plain text.";
86
+ };
87
+ /** 运行被中止(收尾挂着的草稿时附在已有文本之后)。 */
88
+ readonly runStopped: {
89
+ readonly zh: "已停止。";
90
+ readonly en: "Stopped.";
91
+ };
92
+ /** 运行失败。 */
93
+ readonly runFailed: {
94
+ readonly zh: "抱歉,出错了,请稍后再试。";
95
+ readonly en: "Sorry, something went wrong. Please try again later.";
96
+ };
97
+ };
98
+ export type ChannelPhrase = keyof typeof CHANNEL_PHRASES;
99
+ /** 取一条话术。 */
100
+ export declare function phrase(key: ChannelPhrase, locale: ChannelLocale): string;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * 机器人在 IM 里说的固定话术(全部集中在这里,zh / en 同步):按连接所属组织的默认语言选择。
3
+ * 模型回复不经过这里,原样转换为 IM 富文本、不翻译。
4
+ */
5
+ export const CHANNEL_PHRASES = {
6
+ /** 私聊 `/new` 之后。 */
7
+ newConversation: { zh: "已开始新对话", en: "Started a new conversation." },
8
+ /** 未绑定的人在私聊里发消息:附绑定卡片。 */
9
+ bindPrompt: {
10
+ zh: "请先绑定你的 Capybara 账号,再与我对话。",
11
+ en: "Please link your Capybara account before chatting with me.",
12
+ },
13
+ /** 未绑定的人在群里 @ 机器人:绑定链接只在私聊里发(群里谁都能点)。 */
14
+ bindInDm: {
15
+ zh: "请先私聊我,绑定你的 Capybara 账号。",
16
+ en: "Please send me a direct message to link your Capybara account first.",
17
+ },
18
+ /** 无法生成绑定链接(部署未配置 http.publicUrl)。 */
19
+ bindUnavailable: {
20
+ zh: "暂时无法识别你的身份,请联系管理员。",
21
+ en: "I can't identify you yet. Please contact an administrator.",
22
+ },
23
+ /** 已绑定账号但不是该组织成员。 */
24
+ notMember: {
25
+ zh: "你的账号不是该组织的成员,请联系管理员。",
26
+ en: "Your account is not a member of this organization. Please contact an administrator.",
27
+ },
28
+ /** 匿名策略下,连接绑定的 agent 不是全组织可见。 */
29
+ anonymousNotAllowed: {
30
+ zh: "此助手不对匿名访客开放,请联系管理员。",
31
+ en: "This assistant is not available to anonymous guests. Please contact an administrator.",
32
+ },
33
+ /** 连接绑定的 agent 对此人不可用(可见范围不含此人、已删除)。 */
34
+ agentUnavailable: {
35
+ zh: "你无权使用此助手,请联系管理员。",
36
+ en: "You don't have access to this assistant. Please contact an administrator.",
37
+ },
38
+ /** 卡片操作:点击者不是审批人 / 不是提问的发起人(或请求不在该组织)。 */
39
+ cannotHandle: { zh: "你不能处理这条请求。", en: "You can't handle this request." },
40
+ /** 卡片操作:请求已被处理、已过期或已取消。 */
41
+ alreadyHandled: {
42
+ zh: "这条请求已经处理过了。",
43
+ en: "This request has already been handled.",
44
+ },
45
+ /** 卡片操作:回答不符合表单,或审批范围不允许。 */
46
+ invalidAction: {
47
+ zh: "无法完成这个操作,请到网页上处理。",
48
+ en: "That action isn't valid here. Please handle it on the web.",
49
+ },
50
+ /** 审批卡片的标题与随附文本。 */
51
+ approvalTitle: { zh: "需要你的批准", en: "Approval required" },
52
+ /** 提问卡片的随附文本。 */
53
+ questionTitle: { zh: "需要你的回答", en: "Your input is needed" },
54
+ /** 连接卡片的随附文本。 */
55
+ connectTitle: { zh: "需要先完成连接器授权", en: "A connector needs to be connected first" },
56
+ /** 部署未配置 http.publicUrl,无法给出网页链接与卡片时的退回文本。 */
57
+ handleOnWeb: {
58
+ zh: "有一条请求需要你到 Capybara 网页上处理。",
59
+ en: "A request is waiting for you in Capybara on the web.",
60
+ },
61
+ /**
62
+ * Phase D: `/name args` named an invocable skill, but the kernel refused to render it
63
+ * (`validation_failed`: arguments or the rendered skill over the limits); the message was posted
64
+ * as typed instead (batch 4 review m2).
65
+ */
66
+ skillNotRun: {
67
+ zh: "技能没有运行:参数或技能内容过长。你的消息已按普通文本发送。",
68
+ en: "The skill was not run: its arguments or instructions are too long. Your message was sent as plain text.",
69
+ },
70
+ /** 运行被中止(收尾挂着的草稿时附在已有文本之后)。 */
71
+ runStopped: { zh: "已停止。", en: "Stopped." },
72
+ /** 运行失败。 */
73
+ runFailed: {
74
+ zh: "抱歉,出错了,请稍后再试。",
75
+ en: "Sorry, something went wrong. Please try again later.",
76
+ },
77
+ };
78
+ /** 取一条话术。 */
79
+ export function phrase(key, locale) {
80
+ return CHANNEL_PHRASES[key][locale];
81
+ }
@@ -0,0 +1,182 @@
1
+ import type { ExtensionContext, InboundEvent, Logger } from "@capybara-hq/plugin-sdk";
2
+ import type { Redis } from "ioredis";
3
+ import type { KernelConfig } from "../config/schema.js";
4
+ import type { KernelDb } from "../db/kernel-schema.js";
5
+ import { type ChannelConnections } from "./connections.service.js";
6
+ /** 长连接租约键(内核锁):值为持有方的随机 token。 */
7
+ export declare const channelLeaseKey: (connectionId: string) => string;
8
+ /**
9
+ * Gateway heartbeats, one ZSET per channel plugin (Ruling R3): members are process replica ids of the
10
+ * gateways that have that plugin loaded, scores the Redis server time (ms) of the member's last
11
+ * lease-renewal round. Live = score > server now - `leaseTtlMs`. Per plugin, so a gateway that cannot
12
+ * load a plugin does not count toward that plugin's share.
13
+ */
14
+ export declare const gatewayReplicasKey: (plugin: string) => string;
15
+ /** Bus topic published after an over-share replica handed a connection back (claim-only nudge). */
16
+ export declare const CHANNEL_HANDOFF_TOPIC = "channel.handoff";
17
+ /**
18
+ * Handoff marker written when an over-share replica gives a connection back: value = that replica's
19
+ * id, PX = 2 x `scanIntervalMs`. The releasing replica does not claim the connection while it exists.
20
+ */
21
+ export declare const channelHandoffKey: (connectionId: string) => string;
22
+ /** Rate-limit key of the "no live gateway" warning (one line per check interval, cluster-wide). */
23
+ export declare const gatewayMissingWarnedKey = "capk:gateway-missing-warned";
24
+ /**
25
+ * Upper bound of the connections one gateway replica holds: `ceil(runnable / live) + slack`, with
26
+ * `live < 1` treated as 1. With `rank` (this replica's index among the live replicas sorted by id)
27
+ * the remainder goes to the lowest ranks only, so the per-replica targets add up to exactly
28
+ * `runnable + live * slack`: with slack 0, 4 connections on 3 replicas split 2 / 1 / 1 instead of
29
+ * leaving a newcomer with nothing next to two replicas that each sit at the ceiling. Rank 0 (the
30
+ * default) gets the full ceiling.
31
+ */
32
+ export declare function shareTarget(runnable: number, live: number, slack: number, rank?: number): number;
33
+ /** Live heartbeat members of each plugin (Redis server clock). */
34
+ export declare function liveGateways(redis: Redis, plugins: string[], ttlMs: number): Promise<Map<string, string[]>>;
35
+ export interface ChannelSupervisorDeps {
36
+ db: KernelDb;
37
+ redis: Redis;
38
+ bus: ExtensionContext["bus"];
39
+ connections: Pick<ChannelConnections, "runtime">;
40
+ /** 本进程已加载、提供 `channel@1` 的插件名(内核传 `host.list("channel")`)。 */
41
+ localPlugins: () => string[];
42
+ onEvent(connectionId: string, e: InboundEvent): Promise<void>;
43
+ config: () => Pick<KernelConfig, "channels">;
44
+ log: Pick<Logger, "warn" | "error">;
45
+ /**
46
+ * This process's replica id (`newReplicaId()` in kernel.ts), the member of the gateway heartbeat
47
+ * ZSET. Not `http.replicaId`, which is optional and may repeat across replicas.
48
+ */
49
+ replicaId: string;
50
+ /** Called at the start of every scan round (`claimOnly` for handoff nudges); for tests / metrics. */
51
+ onScan?: (claimOnly: boolean) => void;
52
+ }
53
+ /**
54
+ * 渠道长连接选主(runs only on the gateway role)。每个副本两个各自独立的循环,周期都是 `channels.scanIntervalMs`(默认 10s):
55
+ * - 续租循环:为本进程持有的连接续租(`capk:channel-lease:<id>`,TTL `channels.leaseTtlMs` 默认 30s)。
56
+ * 它不做任何可能慢的事(不等交还、不查库),一个插件迟迟不退出不会拖慢其他连接的续租。
57
+ * - 扫描循环:复核持有的连接仍为 active、未删除且插件在该组织启用(不满足就交还,交还不阻塞本轮),
58
+ * 再扫描无人持有的这类连接,`SET NX PX` 取到租约的副本调用插件 `connect`(传 `signal`)。
59
+ * 续租失败(租约已丢)→ 立即中止,不释放(已不是自己的);Redis 出错时,自上次续租成功起满 `TTL - 扫描周期`
60
+ * 仍续不上就按丢失处理(赶在租约可能被别的副本拿走之前断开)。连接被停用 / 删除 / 改配置(内核 bus `channel.changed`,
61
+ * 或扫描时复核发现)→ 中止、等 `connect` 返回后释放租约,下一轮任一副本按新配置重连;取得租约到 `connect` 开始之间
62
+ * 收到的重连广播会被记下,开始后立即交还。
63
+ * `connect` 抛错或提前返回 → 记 `last_error`,在 Redis 写退避标记(指数退避,上限 5 分钟),释放租约后由任一副本重试。
64
+ * Fair share (E11-B): the renewal loop also writes this replica's heartbeat into `capk:gateway-replicas`;
65
+ * each scan computes this replica's target from the runnable count and the live replicas
66
+ * (`shareTarget`), stops claiming at the target and, when above it, gives back one connection per
67
+ * round (the most recently connected) with a handoff marker. Exactly one holder per connection is
68
+ * still guaranteed by the lease alone; the share only decides who claims.
69
+ * 停机时中止全部长连接并释放租约,并等进行中的 `onEvent`(入队)结束。持有的长连接、租约 token 与定时器都是「本进程持有的资源」,
70
+ * 跨副本的状态(租约、退避、失败计数)都在 Redis。
71
+ */
72
+ export declare class ChannelSupervisor {
73
+ private readonly deps;
74
+ private readonly held;
75
+ /** 已取得租约、正在读配置准备 `connect` 的连接;值为期间是否收到了重连广播。 */
76
+ private readonly connecting;
77
+ /** 正在交还(已中止、等 `connect` 返回)的连接 → 租约 token:等待期间照常续租,交还完成才释放。 */
78
+ private readonly settling;
79
+ /** 进行中的交还(`stop()` 要等它们全部结束)。 */
80
+ private readonly releasing;
81
+ /** 进行中的 `onEvent`(去重 + 入队,很快):`stop()` 等它们结束,插件才不会在内核关闭队列之后才拿到结果。 */
82
+ private readonly inflight;
83
+ private readonly loops;
84
+ private stopped;
85
+ private unsubscribe;
86
+ private unsubscribeHandoff;
87
+ /** Scans run one at a time (periodic and nudged), so share counts are never raced. */
88
+ private scanChain;
89
+ /** Plugins this replica heartbeats for (to ZREM when a plugin goes away and on stop). */
90
+ private heartbeated;
91
+ /** A claim-only scan is queued and has not started yet: further nudges until then are dropped. */
92
+ private claimQueued;
93
+ constructor(deps: ChannelSupervisorDeps);
94
+ start(): Promise<void>;
95
+ /** Runs `fn` after any scan in progress. */
96
+ private exclusive;
97
+ /** 周期循环:上一轮结束后隔 `scanIntervalMs` 再跑下一轮;首轮立即执行。 */
98
+ private loop;
99
+ private renewAll;
100
+ /**
101
+ * Writes this replica's heartbeat into the ZSET of every channel plugin loaded here (trimming
102
+ * members older than one TTL; the keys expire too) and leaves the ZSETs of plugins no longer
103
+ * loaded. Uses the Redis server clock.
104
+ */
105
+ private heartbeat;
106
+ /**
107
+ * This replica's share target per plugin for the round. Live replicas of a plugin are its
108
+ * heartbeat members newer than one TTL plus this replica itself (its own heartbeat may not be
109
+ * written yet on the first round).
110
+ */
111
+ private targets;
112
+ private heldOf;
113
+ /**
114
+ * Gives back the most recently connected connection of `plugin`, leaving a handoff marker first;
115
+ * once its lease is released, nudges the other replicas to claim it.
116
+ */
117
+ private handOff;
118
+ /** After-release callback: tells the other replicas a connection of `plugin` is free to claim. */
119
+ private nudge;
120
+ private afterRenew;
121
+ /**
122
+ * 可以持有的连接:active、未删除、所属组织未删除、插件在该组织启用(组织停用插件 / 删除组织时持有方据此断开),
123
+ * 且插件在本进程已加载——滚动升级期间还没有该插件的副本根本不考虑它(不取租约、不记失败),留给有插件的副本。
124
+ */
125
+ private runnable;
126
+ /**
127
+ * 持有的连接仍须可持有(bus 广播是尽力而为,这里兜底)。交还不等待:交还要等插件 `connect` 返回(至多 SETTLE_MS),
128
+ * 不能让一个迟迟不退出的插件拖住扫描。
129
+ */
130
+ private recheckHeld;
131
+ /**
132
+ * One scan round, per channel plugin (Ruling R3): above that plugin's share, give back one of its
133
+ * connections (never more, so this replica does not drop below its target) and claim none of it;
134
+ * otherwise claim unheld ones up to the target. `claimOnly` (a handoff nudge) never gives back.
135
+ */
136
+ private scan;
137
+ /** 已取得租约:读配置并在后台跑插件的 `connect`。 */
138
+ private connect;
139
+ /** 记下进行中的 `onEvent`,原样返回(结果与异常都交给插件)。 */
140
+ private track;
141
+ /** 记录失败:`last_error`、连续失败计数与退避标记(都跨副本可见)。 */
142
+ private failed;
143
+ /** 租约已丢:中止,不释放(已不是自己的)。 */
144
+ private drop;
145
+ /** 后台交还,记入 `releasing` 供 `stop()` 等待;`after` runs once the lease is released. */
146
+ private releaseInBackground;
147
+ /** 主动交还:中止,等 `connect` 返回(至多 SETTLE_MS)后释放租约;超时则让租约自然过期,避免两边同时在线。 */
148
+ private release;
149
+ private releaseLease;
150
+ /**
151
+ * 本进程的插件实例变了(撤销、替换为新实例;内核接 `host.onChange`,C17):交还该插件持有的全部长连接
152
+ * (中止旧实例的 `connect`、等它返回后释放租约)。插件仍在本进程(新实例)时,下一轮扫描由任一副本按新实例重新选主;
153
+ * 已撤销则本副本不再考虑它(`localPlugins` 里没有了)。
154
+ */
155
+ pluginChanged(plugin: string): void;
156
+ /** 停机:停止扫描,中止全部长连接并释放租约。幂等。 */
157
+ stop(): Promise<void>;
158
+ }
159
+ /** Maintenance job that warns when channel connections need a gateway and none is live (Ruling R1). */
160
+ export declare const GATEWAY_CHECK_JOB = "channel-gateway-check";
161
+ export declare const GATEWAY_CHECK_SCHEDULER_ID = "channel-gateway-check-every";
162
+ export declare const GATEWAY_CHECK_EVERY_MS = 60000;
163
+ /**
164
+ * Runs on the worker role (maintenance queue), per channel plugin (Ruling R3): when a plugin has
165
+ * active connections (not deleted, org not deleted, plugin enabled for the org; long connection or
166
+ * webhook mode, Ruling R4) but no gateway replica with that plugin loaded has a heartbeat newer than
167
+ * one lease TTL (Redis server clock), nobody holds those long connections or answers their webhooks.
168
+ * - Logs one `warn` (naming the plugins) per interval at most across the cluster: a Redis
169
+ * `SET NX PX` rate limit a little shorter than the job period, so a duplicated job or several
170
+ * worker replicas do not repeat it while each period still gets its line.
171
+ * - Silent before `graceUntil` (this process's start + one lease TTL), so a fresh cluster does not
172
+ * warn before the gateways' first heartbeat.
173
+ * Returns whether it warned.
174
+ */
175
+ export declare function checkGatewayPresence(deps: {
176
+ db: KernelDb;
177
+ redis: Redis;
178
+ config: () => Pick<KernelConfig, "channels">;
179
+ log: Pick<Logger, "warn">;
180
+ everyMs?: number;
181
+ graceUntil?: number;
182
+ }): Promise<boolean>;