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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (631) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +20 -2
  4. package/bootstrap.json +22 -0
  5. package/dist/admin/admin.controller.d.ts +139 -0
  6. package/dist/admin/admin.controller.js +238 -0
  7. package/dist/admin/extensions.controller.d.ts +100 -0
  8. package/dist/admin/extensions.controller.js +226 -0
  9. package/dist/admin/setup.controller.d.ts +36 -0
  10. package/dist/admin/setup.controller.js +106 -0
  11. package/dist/admin/setup.service.d.ts +47 -0
  12. package/dist/admin/setup.service.js +90 -0
  13. package/dist/agents/agents.controller.d.ts +205 -0
  14. package/dist/agents/agents.controller.js +144 -0
  15. package/dist/agents/agents.service.d.ts +177 -0
  16. package/dist/agents/agents.service.js +677 -0
  17. package/dist/agents/definition.d.ts +198 -0
  18. package/dist/agents/definition.js +152 -0
  19. package/dist/agents/models.controller.d.ts +13 -0
  20. package/dist/agents/models.controller.js +31 -0
  21. package/dist/agents/templates.controller.d.ts +15 -0
  22. package/dist/agents/templates.controller.js +37 -0
  23. package/dist/agents/templates.d.ts +83 -0
  24. package/dist/agents/templates.js +173 -0
  25. package/dist/catalog/admin-catalog.controller.d.ts +143 -0
  26. package/dist/catalog/admin-catalog.controller.js +245 -0
  27. package/dist/catalog/catalog.service.d.ts +430 -0
  28. package/dist/catalog/catalog.service.js +882 -0
  29. package/dist/catalog/claude/agents.d.ts +27 -0
  30. package/dist/catalog/claude/agents.js +270 -0
  31. package/dist/catalog/claude/commands.d.ts +50 -0
  32. package/dist/catalog/claude/commands.js +179 -0
  33. package/dist/catalog/claude/manifest.d.ts +69 -0
  34. package/dist/catalog/claude/manifest.js +134 -0
  35. package/dist/catalog/claude/marketplace.d.ts +35 -0
  36. package/dist/catalog/claude/marketplace.js +194 -0
  37. package/dist/catalog/claude/mcp.d.ts +33 -0
  38. package/dist/catalog/claude/mcp.js +226 -0
  39. package/dist/catalog/claude/report.d.ts +86 -0
  40. package/dist/catalog/claude/report.js +121 -0
  41. package/dist/catalog/claude/translate.d.ts +56 -0
  42. package/dist/catalog/claude/translate.js +857 -0
  43. package/dist/catalog/cli.d.ts +46 -0
  44. package/dist/catalog/cli.js +211 -0
  45. package/dist/catalog/git-source.d.ts +127 -0
  46. package/dist/catalog/git-source.js +520 -0
  47. package/dist/catalog/marketplace-fetch.d.ts +99 -0
  48. package/dist/catalog/marketplace-fetch.js +203 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +97 -0
  50. package/dist/catalog/marketplaces.controller.js +197 -0
  51. package/dist/catalog/marketplaces.service.d.ts +340 -0
  52. package/dist/catalog/marketplaces.service.js +1217 -0
  53. package/dist/catalog/org-catalog.controller.d.ts +128 -0
  54. package/dist/catalog/org-catalog.controller.js +277 -0
  55. package/dist/catalog/org-catalog.service.d.ts +246 -0
  56. package/dist/catalog/org-catalog.service.js +625 -0
  57. package/dist/catalog/plugin-import.d.ts +436 -0
  58. package/dist/catalog/plugin-import.js +1069 -0
  59. package/dist/catalog/plugin-install.d.ts +447 -0
  60. package/dist/catalog/plugin-install.js +1333 -0
  61. package/dist/catalog/plugin-package.d.ts +143 -0
  62. package/dist/catalog/plugin-package.js +382 -0
  63. package/dist/catalog/plugin-upgrade.d.ts +222 -0
  64. package/dist/catalog/plugin-upgrade.js +1219 -0
  65. package/dist/catalog/requests.service.d.ts +162 -0
  66. package/dist/catalog/requests.service.js +504 -0
  67. package/dist/catalog/schema-path.d.ts +7 -0
  68. package/dist/catalog/schema-path.js +63 -0
  69. package/dist/catalog/upgrade-targets.d.ts +59 -0
  70. package/dist/catalog/upgrade-targets.js +90 -0
  71. package/dist/catalog/versions.d.ts +31 -0
  72. package/dist/catalog/versions.js +44 -0
  73. package/dist/channels/actions.d.ts +37 -0
  74. package/dist/channels/actions.js +121 -0
  75. package/dist/channels/cards.d.ts +44 -0
  76. package/dist/channels/cards.js +156 -0
  77. package/dist/channels/connections.controller.d.ts +59 -0
  78. package/dist/channels/connections.controller.js +115 -0
  79. package/dist/channels/connections.service.d.ts +187 -0
  80. package/dist/channels/connections.service.js +534 -0
  81. package/dist/channels/features.d.ts +12 -0
  82. package/dist/channels/features.js +22 -0
  83. package/dist/channels/inbound.d.ts +120 -0
  84. package/dist/channels/inbound.js +332 -0
  85. package/dist/channels/outbound.d.ts +140 -0
  86. package/dist/channels/outbound.js +1125 -0
  87. package/dist/channels/phrases.d.ts +100 -0
  88. package/dist/channels/phrases.js +81 -0
  89. package/dist/channels/supervisor.d.ts +182 -0
  90. package/dist/channels/supervisor.js +625 -0
  91. package/dist/channels/threads.d.ts +29 -0
  92. package/dist/channels/threads.js +104 -0
  93. package/dist/channels/webhook-url.d.ts +16 -0
  94. package/dist/channels/webhook-url.js +34 -0
  95. package/dist/channels/webhook.controller.d.ts +19 -0
  96. package/dist/channels/webhook.controller.js +72 -0
  97. package/dist/channels/webhook.d.ts +73 -0
  98. package/dist/channels/webhook.js +274 -0
  99. package/dist/config/docs.d.ts +9 -0
  100. package/dist/config/docs.js +85 -0
  101. package/dist/config/env.d.ts +6 -0
  102. package/dist/config/env.js +73 -0
  103. package/dist/config/fields.d.ts +42 -0
  104. package/dist/config/fields.js +214 -0
  105. package/dist/config/file-source.d.ts +3 -0
  106. package/dist/config/file-source.js +31 -0
  107. package/dist/config/load.d.ts +20 -0
  108. package/dist/config/load.js +98 -0
  109. package/dist/config/nacos-source.d.ts +31 -0
  110. package/dist/config/nacos-source.js +229 -0
  111. package/dist/config/schema.d.ts +223 -0
  112. package/dist/config/schema.js +1151 -0
  113. package/dist/config/sources.d.ts +18 -0
  114. package/dist/config/sources.js +59 -0
  115. package/dist/config/types.d.ts +9 -0
  116. package/dist/config/types.js +7 -0
  117. package/dist/conversations/artifacts.d.ts +52 -0
  118. package/dist/conversations/artifacts.js +137 -0
  119. package/dist/conversations/attachments.controller.d.ts +28 -0
  120. package/dist/conversations/attachments.controller.js +96 -0
  121. package/dist/conversations/attachments.service.d.ts +180 -0
  122. package/dist/conversations/attachments.service.js +578 -0
  123. package/dist/conversations/conversations.controller.d.ts +288 -0
  124. package/dist/conversations/conversations.controller.js +607 -0
  125. package/dist/conversations/conversations.service.d.ts +321 -0
  126. package/dist/conversations/conversations.service.js +754 -0
  127. package/dist/conversations/event-log.d.ts +122 -0
  128. package/dist/conversations/event-log.js +259 -0
  129. package/dist/conversations/events.d.ts +856 -0
  130. package/dist/conversations/events.js +639 -0
  131. package/dist/conversations/files.d.ts +92 -0
  132. package/dist/conversations/files.js +213 -0
  133. package/dist/conversations/outputs-read.d.ts +34 -0
  134. package/dist/conversations/outputs-read.js +37 -0
  135. package/dist/conversations/queue.d.ts +169 -0
  136. package/dist/conversations/queue.js +527 -0
  137. package/dist/conversations/sandbox-status.d.ts +21 -0
  138. package/dist/conversations/sandbox-status.js +24 -0
  139. package/dist/conversations/selection.d.ts +46 -0
  140. package/dist/conversations/selection.js +75 -0
  141. package/dist/conversations/titles.d.ts +93 -0
  142. package/dist/conversations/titles.js +422 -0
  143. package/dist/ctx/bus.d.ts +16 -0
  144. package/dist/ctx/bus.js +101 -0
  145. package/dist/ctx/create-ctx.d.ts +109 -0
  146. package/dist/ctx/create-ctx.js +592 -0
  147. package/dist/ctx/kv.d.ts +4 -0
  148. package/dist/ctx/kv.js +31 -0
  149. package/dist/ctx/lock.d.ts +4 -0
  150. package/dist/ctx/lock.js +39 -0
  151. package/dist/ctx/namespace.d.ts +6 -0
  152. package/dist/ctx/namespace.js +12 -0
  153. package/dist/ctx/queue.d.ts +25 -0
  154. package/dist/ctx/queue.js +150 -0
  155. package/dist/ctx/secrets.d.ts +45 -0
  156. package/dist/ctx/secrets.js +175 -0
  157. package/dist/db/kernel-schema.d.ts +1122 -0
  158. package/dist/db/kernel-schema.js +5 -0
  159. package/dist/db/migrator.d.ts +28 -0
  160. package/dist/db/migrator.js +140 -0
  161. package/dist/db/pool.d.ts +21 -0
  162. package/dist/db/pool.js +28 -0
  163. package/dist/db/sql-statements.d.ts +34 -0
  164. package/dist/db/sql-statements.js +168 -0
  165. package/dist/errors.d.ts +210 -0
  166. package/dist/errors.js +212 -0
  167. package/dist/evals/budget.d.ts +61 -0
  168. package/dist/evals/budget.js +181 -0
  169. package/dist/evals/diff.d.ts +55 -0
  170. package/dist/evals/diff.js +133 -0
  171. package/dist/evals/judge.d.ts +53 -0
  172. package/dist/evals/judge.js +149 -0
  173. package/dist/evals/plan.d.ts +47 -0
  174. package/dist/evals/plan.js +77 -0
  175. package/dist/evals/reconstruct.d.ts +137 -0
  176. package/dist/evals/reconstruct.js +322 -0
  177. package/dist/evals/recorded-tools.d.ts +54 -0
  178. package/dist/evals/recorded-tools.js +167 -0
  179. package/dist/evals/run-replay.d.ts +86 -0
  180. package/dist/evals/run-replay.js +502 -0
  181. package/dist/evals/runs.controller.d.ts +100 -0
  182. package/dist/evals/runs.controller.js +199 -0
  183. package/dist/evals/runs.service.d.ts +275 -0
  184. package/dist/evals/runs.service.js +836 -0
  185. package/dist/evals/sets.controller.d.ts +61 -0
  186. package/dist/evals/sets.controller.js +183 -0
  187. package/dist/evals/sets.service.d.ts +128 -0
  188. package/dist/evals/sets.service.js +558 -0
  189. package/dist/evals/snapshot.d.ts +76 -0
  190. package/dist/evals/snapshot.js +207 -0
  191. package/dist/evals/step-replay.d.ts +113 -0
  192. package/dist/evals/step-replay.js +181 -0
  193. package/dist/evals/trajectory.controller.d.ts +41 -0
  194. package/dist/evals/trajectory.controller.js +88 -0
  195. package/dist/evals/trajectory.d.ts +144 -0
  196. package/dist/evals/trajectory.js +338 -0
  197. package/dist/evals/trajectory.service.d.ts +108 -0
  198. package/dist/evals/trajectory.service.js +323 -0
  199. package/dist/evals/worker.d.ts +101 -0
  200. package/dist/evals/worker.js +789 -0
  201. package/dist/extensions/admin-ops.d.ts +105 -0
  202. package/dist/extensions/admin-ops.js +353 -0
  203. package/dist/extensions/admin-view.d.ts +79 -0
  204. package/dist/extensions/admin-view.js +327 -0
  205. package/dist/extensions/approvals.d.ts +119 -0
  206. package/dist/extensions/approvals.js +205 -0
  207. package/dist/extensions/blobs.d.ts +45 -0
  208. package/dist/extensions/blobs.js +160 -0
  209. package/dist/extensions/bootstrap.d.ts +149 -0
  210. package/dist/extensions/bootstrap.js +441 -0
  211. package/dist/extensions/cli.d.ts +61 -0
  212. package/dist/extensions/cli.js +165 -0
  213. package/dist/extensions/config-json-schema.d.ts +9 -0
  214. package/dist/extensions/config-json-schema.js +73 -0
  215. package/dist/extensions/deployment-config.d.ts +138 -0
  216. package/dist/extensions/deployment-config.js +394 -0
  217. package/dist/extensions/enabled.d.ts +31 -0
  218. package/dist/extensions/enabled.js +55 -0
  219. package/dist/extensions/hooks.d.ts +161 -0
  220. package/dist/extensions/hooks.js +425 -0
  221. package/dist/extensions/host.d.ts +577 -0
  222. package/dist/extensions/host.js +2071 -0
  223. package/dist/extensions/inflight.d.ts +69 -0
  224. package/dist/extensions/inflight.js +277 -0
  225. package/dist/extensions/installs.d.ts +166 -0
  226. package/dist/extensions/installs.js +253 -0
  227. package/dist/extensions/instance.d.ts +167 -0
  228. package/dist/extensions/instance.js +329 -0
  229. package/dist/extensions/ledger.d.ts +30 -0
  230. package/dist/extensions/ledger.js +50 -0
  231. package/dist/extensions/lifecycle.d.ts +80 -0
  232. package/dist/extensions/lifecycle.js +152 -0
  233. package/dist/extensions/migrate-lock.d.ts +51 -0
  234. package/dist/extensions/migrate-lock.js +100 -0
  235. package/dist/extensions/org-config.controller.d.ts +24 -0
  236. package/dist/extensions/org-config.controller.js +59 -0
  237. package/dist/extensions/org-config.d.ts +169 -0
  238. package/dist/extensions/org-config.js +520 -0
  239. package/dist/extensions/package.d.ts +115 -0
  240. package/dist/extensions/package.js +246 -0
  241. package/dist/extensions/permission-set.d.ts +117 -0
  242. package/dist/extensions/permission-set.js +184 -0
  243. package/dist/extensions/permission-view.d.ts +194 -0
  244. package/dist/extensions/permission-view.js +284 -0
  245. package/dist/extensions/registry.d.ts +24 -0
  246. package/dist/extensions/registry.js +56 -0
  247. package/dist/extensions/resolve.d.ts +12 -0
  248. package/dist/extensions/resolve.js +71 -0
  249. package/dist/extensions/sources.d.ts +69 -0
  250. package/dist/extensions/sources.js +120 -0
  251. package/dist/extensions/sync.d.ts +40 -0
  252. package/dist/extensions/sync.js +242 -0
  253. package/dist/files/previewers.controller.d.ts +46 -0
  254. package/dist/files/previewers.controller.js +105 -0
  255. package/dist/files/previewers.d.ts +100 -0
  256. package/dist/files/previewers.js +250 -0
  257. package/dist/http/api.module.d.ts +114 -0
  258. package/dist/http/api.module.js +448 -0
  259. package/dist/http/app.d.ts +77 -0
  260. package/dist/http/app.js +170 -0
  261. package/dist/http/error.filter.d.ts +21 -0
  262. package/dist/http/error.filter.js +85 -0
  263. package/dist/http/gateway.module.d.ts +15 -0
  264. package/dist/http/gateway.module.js +13 -0
  265. package/dist/http/health.controller.d.ts +26 -0
  266. package/dist/http/health.controller.js +79 -0
  267. package/dist/http/nest-logger.d.ts +20 -0
  268. package/dist/http/nest-logger.js +28 -0
  269. package/dist/http/plugin-dispatch.d.ts +68 -0
  270. package/dist/http/plugin-dispatch.js +200 -0
  271. package/dist/http/tokens.d.ts +131 -0
  272. package/dist/http/tokens.js +131 -0
  273. package/dist/http/zod.pipe.d.ts +8 -0
  274. package/dist/http/zod.pipe.js +14 -0
  275. package/dist/identity/accounts.d.ts +93 -0
  276. package/dist/identity/accounts.js +367 -0
  277. package/dist/identity/api-tokens.d.ts +73 -0
  278. package/dist/identity/api-tokens.js +197 -0
  279. package/dist/identity/audit.d.ts +23 -0
  280. package/dist/identity/audit.js +41 -0
  281. package/dist/identity/auth.controller.d.ts +40 -0
  282. package/dist/identity/auth.controller.js +130 -0
  283. package/dist/identity/auth.guard.d.ts +41 -0
  284. package/dist/identity/auth.guard.js +162 -0
  285. package/dist/identity/binding.d.ts +47 -0
  286. package/dist/identity/binding.js +84 -0
  287. package/dist/identity/cookies.d.ts +16 -0
  288. package/dist/identity/cookies.js +32 -0
  289. package/dist/identity/credential-check.d.ts +17 -0
  290. package/dist/identity/credential-check.js +24 -0
  291. package/dist/identity/enterprise-admin.d.ts +14 -0
  292. package/dist/identity/enterprise-admin.js +27 -0
  293. package/dist/identity/external.d.ts +106 -0
  294. package/dist/identity/external.js +337 -0
  295. package/dist/identity/hash.d.ts +2 -0
  296. package/dist/identity/hash.js +3 -0
  297. package/dist/identity/login.d.ts +6 -0
  298. package/dist/identity/login.js +20 -0
  299. package/dist/identity/me.controller.d.ts +61 -0
  300. package/dist/identity/me.controller.js +159 -0
  301. package/dist/identity/passwords.d.ts +6 -0
  302. package/dist/identity/passwords.js +37 -0
  303. package/dist/identity/principal.d.ts +56 -0
  304. package/dist/identity/principal.js +38 -0
  305. package/dist/identity/rate-limit.d.ts +55 -0
  306. package/dist/identity/rate-limit.js +121 -0
  307. package/dist/identity/sessions.d.ts +84 -0
  308. package/dist/identity/sessions.js +306 -0
  309. package/dist/identity/settings.d.ts +121 -0
  310. package/dist/identity/settings.js +248 -0
  311. package/dist/identity/sso.controller.d.ts +59 -0
  312. package/dist/identity/sso.controller.js +192 -0
  313. package/dist/identity/sso.d.ts +83 -0
  314. package/dist/identity/sso.js +202 -0
  315. package/dist/inbox/inbox.service.d.ts +43 -0
  316. package/dist/inbox/inbox.service.js +57 -0
  317. package/dist/index.d.ts +67 -0
  318. package/dist/index.js +65 -0
  319. package/dist/kernel.d.ts +256 -0
  320. package/dist/kernel.js +1326 -0
  321. package/dist/log.d.ts +48 -0
  322. package/dist/log.js +229 -0
  323. package/dist/models/prices.d.ts +53 -0
  324. package/dist/models/prices.js +121 -0
  325. package/dist/models/purposes.controller.d.ts +19 -0
  326. package/dist/models/purposes.controller.js +56 -0
  327. package/dist/models/purposes.d.ts +140 -0
  328. package/dist/models/purposes.js +267 -0
  329. package/dist/net/proxy.d.ts +44 -0
  330. package/dist/net/proxy.js +162 -0
  331. package/dist/net/public-address.d.ts +60 -0
  332. package/dist/net/public-address.js +271 -0
  333. package/dist/net/safe-fetch.d.ts +38 -0
  334. package/dist/net/safe-fetch.js +140 -0
  335. package/dist/orgs/directory-sync.controller.d.ts +14 -0
  336. package/dist/orgs/directory-sync.controller.js +40 -0
  337. package/dist/orgs/directory-sync.d.ts +166 -0
  338. package/dist/orgs/directory-sync.js +558 -0
  339. package/dist/orgs/invitations.controller.d.ts +58 -0
  340. package/dist/orgs/invitations.controller.js +137 -0
  341. package/dist/orgs/invitations.service.d.ts +80 -0
  342. package/dist/orgs/invitations.service.js +217 -0
  343. package/dist/orgs/members.service.d.ts +63 -0
  344. package/dist/orgs/members.service.js +234 -0
  345. package/dist/orgs/offboarding.d.ts +141 -0
  346. package/dist/orgs/offboarding.js +398 -0
  347. package/dist/orgs/org-lock.d.ts +32 -0
  348. package/dist/orgs/org-lock.js +46 -0
  349. package/dist/orgs/org.guard.d.ts +35 -0
  350. package/dist/orgs/org.guard.js +95 -0
  351. package/dist/orgs/orgs.controller.d.ts +78 -0
  352. package/dist/orgs/orgs.controller.js +192 -0
  353. package/dist/orgs/orgs.service.d.ts +61 -0
  354. package/dist/orgs/orgs.service.js +209 -0
  355. package/dist/orgs/roles.d.ts +13 -0
  356. package/dist/orgs/roles.js +58 -0
  357. package/dist/orgs/settings.controller.d.ts +20 -0
  358. package/dist/orgs/settings.controller.js +53 -0
  359. package/dist/orgs/settings.service.d.ts +120 -0
  360. package/dist/orgs/settings.service.js +178 -0
  361. package/dist/packages/npm.d.ts +50 -0
  362. package/dist/packages/npm.js +218 -0
  363. package/dist/packages/provenance.d.ts +47 -0
  364. package/dist/packages/provenance.js +147 -0
  365. package/dist/packages/tgz.d.ts +76 -0
  366. package/dist/packages/tgz.js +225 -0
  367. package/dist/runtime/abort.d.ts +32 -0
  368. package/dist/runtime/abort.js +71 -0
  369. package/dist/runtime/checkpointer.d.ts +32 -0
  370. package/dist/runtime/checkpointer.js +243 -0
  371. package/dist/runtime/context/build.d.ts +254 -0
  372. package/dist/runtime/context/build.js +693 -0
  373. package/dist/runtime/context/claude-tools.d.ts +11 -0
  374. package/dist/runtime/context/claude-tools.js +24 -0
  375. package/dist/runtime/context/compaction.d.ts +26 -0
  376. package/dist/runtime/context/compaction.js +195 -0
  377. package/dist/runtime/context/pairing.d.ts +11 -0
  378. package/dist/runtime/context/pairing.js +82 -0
  379. package/dist/runtime/context/reminders.d.ts +5 -0
  380. package/dist/runtime/context/reminders.js +11 -0
  381. package/dist/runtime/context/skills.d.ts +105 -0
  382. package/dist/runtime/context/skills.js +283 -0
  383. package/dist/runtime/context/tokens.d.ts +19 -0
  384. package/dist/runtime/context/tokens.js +104 -0
  385. package/dist/runtime/conversation-lock.d.ts +40 -0
  386. package/dist/runtime/conversation-lock.js +97 -0
  387. package/dist/runtime/hook-calls.d.ts +84 -0
  388. package/dist/runtime/hook-calls.js +136 -0
  389. package/dist/runtime/langgraph-loop.d.ts +52 -0
  390. package/dist/runtime/langgraph-loop.js +247 -0
  391. package/dist/runtime/loop.d.ts +93 -0
  392. package/dist/runtime/loop.js +7 -0
  393. package/dist/runtime/maintenance.d.ts +80 -0
  394. package/dist/runtime/maintenance.js +147 -0
  395. package/dist/runtime/media-cache.d.ts +21 -0
  396. package/dist/runtime/media-cache.js +51 -0
  397. package/dist/runtime/model-call.d.ts +176 -0
  398. package/dist/runtime/model-call.js +1049 -0
  399. package/dist/runtime/providers.d.ts +86 -0
  400. package/dist/runtime/providers.js +224 -0
  401. package/dist/runtime/quota.d.ts +29 -0
  402. package/dist/runtime/quota.js +70 -0
  403. package/dist/runtime/run-finish.d.ts +45 -0
  404. package/dist/runtime/run-finish.js +69 -0
  405. package/dist/runtime/run-queue.d.ts +121 -0
  406. package/dist/runtime/run-queue.js +493 -0
  407. package/dist/runtime/run-worker.d.ts +138 -0
  408. package/dist/runtime/run-worker.js +805 -0
  409. package/dist/runtime/stream.controller.d.ts +34 -0
  410. package/dist/runtime/stream.controller.js +122 -0
  411. package/dist/runtime/stream.d.ts +63 -0
  412. package/dist/runtime/stream.js +262 -0
  413. package/dist/runtime/subagents/child.d.ts +80 -0
  414. package/dist/runtime/subagents/child.js +225 -0
  415. package/dist/runtime/subagents/definition.d.ts +103 -0
  416. package/dist/runtime/subagents/definition.js +392 -0
  417. package/dist/runtime/subagents/dispatch.d.ts +69 -0
  418. package/dist/runtime/subagents/dispatch.js +502 -0
  419. package/dist/runtime/subagents/limits.d.ts +23 -0
  420. package/dist/runtime/subagents/limits.js +34 -0
  421. package/dist/runtime/subagents/org-agents.d.ts +50 -0
  422. package/dist/runtime/subagents/org-agents.js +70 -0
  423. package/dist/runtime/subagents/preamble.d.ts +7 -0
  424. package/dist/runtime/subagents/preamble.js +11 -0
  425. package/dist/runtime/subagents/progress.d.ts +26 -0
  426. package/dist/runtime/subagents/progress.js +36 -0
  427. package/dist/runtime/subagents/roster.d.ts +55 -0
  428. package/dist/runtime/subagents/roster.js +111 -0
  429. package/dist/runtime/subagents/skill-fork.d.ts +123 -0
  430. package/dist/runtime/subagents/skill-fork.js +259 -0
  431. package/dist/runtime/usage-report.d.ts +163 -0
  432. package/dist/runtime/usage-report.js +550 -0
  433. package/dist/runtime/waits.d.ts +233 -0
  434. package/dist/runtime/waits.js +883 -0
  435. package/dist/sandbox/leases.d.ts +169 -0
  436. package/dist/sandbox/leases.js +515 -0
  437. package/dist/sandbox/lifecycle.d.ts +21 -0
  438. package/dist/sandbox/lifecycle.js +68 -0
  439. package/dist/sandbox/sandbox.service.d.ts +249 -0
  440. package/dist/sandbox/sandbox.service.js +908 -0
  441. package/dist/skills/catalog.d.ts +149 -0
  442. package/dist/skills/catalog.js +405 -0
  443. package/dist/skills/changes.controller.d.ts +56 -0
  444. package/dist/skills/changes.controller.js +136 -0
  445. package/dist/skills/changes.service.d.ts +175 -0
  446. package/dist/skills/changes.service.js +805 -0
  447. package/dist/skills/invocable.controller.d.ts +23 -0
  448. package/dist/skills/invocable.controller.js +50 -0
  449. package/dist/skills/invocation-keys.d.ts +23 -0
  450. package/dist/skills/invocation-keys.js +44 -0
  451. package/dist/skills/invoke.d.ts +135 -0
  452. package/dist/skills/invoke.js +286 -0
  453. package/dist/skills/package.d.ts +87 -0
  454. package/dist/skills/package.js +227 -0
  455. package/dist/skills/skills.controller.d.ts +40 -0
  456. package/dist/skills/skills.controller.js +110 -0
  457. package/dist/skills/skills.service.d.ts +192 -0
  458. package/dist/skills/skills.service.js +567 -0
  459. package/dist/storage/prefix.d.ts +36 -0
  460. package/dist/storage/prefix.js +104 -0
  461. package/dist/storage/purge.d.ts +27 -0
  462. package/dist/storage/purge.js +75 -0
  463. package/dist/storage/storage.service.d.ts +44 -0
  464. package/dist/storage/storage.service.js +145 -0
  465. package/dist/text.d.ts +13 -0
  466. package/dist/text.js +13 -0
  467. package/dist/tools/approvals.controller.d.ts +53 -0
  468. package/dist/tools/approvals.controller.js +128 -0
  469. package/dist/tools/approvals.service.d.ts +172 -0
  470. package/dist/tools/approvals.service.js +568 -0
  471. package/dist/tools/breaker.d.ts +28 -0
  472. package/dist/tools/breaker.js +72 -0
  473. package/dist/tools/builtins/agent.d.ts +81 -0
  474. package/dist/tools/builtins/agent.js +223 -0
  475. package/dist/tools/builtins/ask-user.d.ts +28 -0
  476. package/dist/tools/builtins/ask-user.js +139 -0
  477. package/dist/tools/builtins/read-tool-output.d.ts +18 -0
  478. package/dist/tools/builtins/read-tool-output.js +108 -0
  479. package/dist/tools/builtins/sandbox/bash.d.ts +16 -0
  480. package/dist/tools/builtins/sandbox/bash.js +137 -0
  481. package/dist/tools/builtins/sandbox/common.d.ts +114 -0
  482. package/dist/tools/builtins/sandbox/common.js +304 -0
  483. package/dist/tools/builtins/sandbox/deliver.d.ts +5 -0
  484. package/dist/tools/builtins/sandbox/deliver.js +180 -0
  485. package/dist/tools/builtins/sandbox/edit.d.ts +4 -0
  486. package/dist/tools/builtins/sandbox/edit.js +98 -0
  487. package/dist/tools/builtins/sandbox/glob-match.d.ts +25 -0
  488. package/dist/tools/builtins/sandbox/glob-match.js +240 -0
  489. package/dist/tools/builtins/sandbox/glob.d.ts +4 -0
  490. package/dist/tools/builtins/sandbox/glob.js +104 -0
  491. package/dist/tools/builtins/sandbox/grep.d.ts +9 -0
  492. package/dist/tools/builtins/sandbox/grep.js +133 -0
  493. package/dist/tools/builtins/sandbox/index.d.ts +12 -0
  494. package/dist/tools/builtins/sandbox/index.js +27 -0
  495. package/dist/tools/builtins/sandbox/names.d.ts +7 -0
  496. package/dist/tools/builtins/sandbox/names.js +20 -0
  497. package/dist/tools/builtins/sandbox/read.d.ts +8 -0
  498. package/dist/tools/builtins/sandbox/read.js +121 -0
  499. package/dist/tools/builtins/sandbox/write.d.ts +4 -0
  500. package/dist/tools/builtins/sandbox/write.js +88 -0
  501. package/dist/tools/builtins/skill-load.d.ts +53 -0
  502. package/dist/tools/builtins/skill-load.js +446 -0
  503. package/dist/tools/builtins/skill-write.d.ts +59 -0
  504. package/dist/tools/builtins/skill-write.js +244 -0
  505. package/dist/tools/builtins/tool-search.d.ts +31 -0
  506. package/dist/tools/builtins/tool-search.js +171 -0
  507. package/dist/tools/connector-content.controller.d.ts +34 -0
  508. package/dist/tools/connector-content.controller.js +78 -0
  509. package/dist/tools/connector-content.d.ts +104 -0
  510. package/dist/tools/connector-content.js +267 -0
  511. package/dist/tools/connectors.controller.d.ts +210 -0
  512. package/dist/tools/connectors.controller.js +234 -0
  513. package/dist/tools/connectors.service.d.ts +303 -0
  514. package/dist/tools/connectors.service.js +1102 -0
  515. package/dist/tools/credentials.d.ts +139 -0
  516. package/dist/tools/credentials.js +351 -0
  517. package/dist/tools/drift.d.ts +141 -0
  518. package/dist/tools/drift.js +539 -0
  519. package/dist/tools/elicitation.d.ts +81 -0
  520. package/dist/tools/elicitation.js +266 -0
  521. package/dist/tools/endpoint.d.ts +18 -0
  522. package/dist/tools/endpoint.js +115 -0
  523. package/dist/tools/info.d.ts +67 -0
  524. package/dist/tools/info.js +113 -0
  525. package/dist/tools/naming.d.ts +27 -0
  526. package/dist/tools/naming.js +47 -0
  527. package/dist/tools/oauth/discovery.d.ts +65 -0
  528. package/dist/tools/oauth/discovery.js +307 -0
  529. package/dist/tools/oauth/flow.d.ts +63 -0
  530. package/dist/tools/oauth/flow.js +237 -0
  531. package/dist/tools/oauth/oauth.controller.d.ts +31 -0
  532. package/dist/tools/oauth/oauth.controller.js +95 -0
  533. package/dist/tools/oauth/tokens.d.ts +111 -0
  534. package/dist/tools/oauth/tokens.js +258 -0
  535. package/dist/tools/outputs.d.ts +61 -0
  536. package/dist/tools/outputs.js +156 -0
  537. package/dist/tools/pipeline.d.ts +322 -0
  538. package/dist/tools/pipeline.js +1236 -0
  539. package/dist/tools/policy.d.ts +60 -0
  540. package/dist/tools/policy.js +236 -0
  541. package/dist/tools/questions.controller.d.ts +24 -0
  542. package/dist/tools/questions.controller.js +58 -0
  543. package/dist/tools/questions.service.d.ts +103 -0
  544. package/dist/tools/questions.service.js +295 -0
  545. package/dist/tools/redact.d.ts +20 -0
  546. package/dist/tools/redact.js +60 -0
  547. package/dist/tools/registry.d.ts +246 -0
  548. package/dist/tools/registry.js +481 -0
  549. package/dist/tools/resources.d.ts +16 -0
  550. package/dist/tools/resources.js +76 -0
  551. package/dist/tools/specs.d.ts +14 -0
  552. package/dist/tools/specs.js +31 -0
  553. package/dist/tools/validate.d.ts +20 -0
  554. package/dist/tools/validate.js +183 -0
  555. package/dist/tools/view.d.ts +43 -0
  556. package/dist/tools/view.js +225 -0
  557. package/dist/ui/embed-token.d.ts +31 -0
  558. package/dist/ui/embed-token.js +132 -0
  559. package/dist/ui/registry.d.ts +58 -0
  560. package/dist/ui/registry.js +90 -0
  561. package/dist/ui/ui-stream.d.ts +37 -0
  562. package/dist/ui/ui-stream.js +162 -0
  563. package/dist/ui/views.controller.d.ts +81 -0
  564. package/dist/ui/views.controller.js +261 -0
  565. package/dist/ui/views.d.ts +155 -0
  566. package/dist/ui/views.js +306 -0
  567. package/dist/version.d.ts +5 -0
  568. package/dist/version.js +6 -0
  569. package/package.json +67 -3
  570. package/src/migrations/0001_init.sql +8 -0
  571. package/src/migrations/0002_secrets.sql +8 -0
  572. package/src/migrations/0003_identity.sql +117 -0
  573. package/src/migrations/0004_plugin_org_config_nullable.sql +3 -0
  574. package/src/migrations/0005_agents.sql +27 -0
  575. package/src/migrations/0006_conversations.sql +37 -0
  576. package/src/migrations/0007_checkpoints.sql +26 -0
  577. package/src/migrations/0008_runs_trigger_seq.sql +3 -0
  578. package/src/migrations/0009_runs_active_unique.sql +4 -0
  579. package/src/migrations/0010_tools.sql +125 -0
  580. package/src/migrations/0011_approvals_spec.sql +10 -0
  581. package/src/migrations/0012_run_waits.sql +24 -0
  582. package/src/migrations/0013_app_tools_source.sql +4 -0
  583. package/src/migrations/0014_tool_specs.sql +8 -0
  584. package/src/migrations/0015_tool_drift.sql +20 -0
  585. package/src/migrations/0016_plugin_permissions.sql +11 -0
  586. package/src/migrations/0017_identity_sources.sql +6 -0
  587. package/src/migrations/0018_channels.sql +74 -0
  588. package/src/migrations/0019_identity_trust.sql +17 -0
  589. package/src/migrations/0020_channel_card_lookup.sql +10 -0
  590. package/src/migrations/0021_org_storage_purge.sql +9 -0
  591. package/src/migrations/0022_attachments.sql +29 -0
  592. package/src/migrations/0023_sandboxes.sql +37 -0
  593. package/src/migrations/0024_skills.sql +46 -0
  594. package/src/migrations/0025_skills_catalog_idx.sql +6 -0
  595. package/src/migrations/0026_skill_changes.sql +34 -0
  596. package/src/migrations/0027_model_prices.sql +18 -0
  597. package/src/migrations/0028_evals.sql +105 -0
  598. package/src/migrations/0029_model_purposes.sql +18 -0
  599. package/src/migrations/0030_plugin_installs.sql +73 -0
  600. package/src/migrations/0031_plugin_snapshot_source.sql +6 -0
  601. package/src/migrations/0032_plugin_deployment_configs.sql +10 -0
  602. package/src/migrations/0033_rename_apps_to_connectors.sql +25 -0
  603. package/src/migrations/0034_directory.sql +49 -0
  604. package/src/migrations/0035_catalogs.sql +40 -0
  605. package/src/migrations/0036_app_import_staging.sql +17 -0
  606. package/src/migrations/0037_directory_installs.sql +92 -0
  607. package/src/migrations/0038_channel_inbound_mode.sql +6 -0
  608. package/src/migrations/0039_channel_card_pending.sql +8 -0
  609. package/src/migrations/0040_usage_report_sweep.sql +10 -0
  610. package/src/migrations/0041_rename_plugins_to_extensions.sql +38 -0
  611. package/src/migrations/0042_rename_directory_to_catalog.sql +80 -0
  612. package/src/migrations/0043_rename_app_installs_to_plugin_installs.sql +20 -0
  613. package/src/migrations/0044_catalog_one_kind.sql +90 -0
  614. package/src/migrations/0045_plugin_dependencies.sql +9 -0
  615. package/src/migrations/0046_git_sources.sql +25 -0
  616. package/src/migrations/0047_marketplace_entry_heads.sql +7 -0
  617. package/src/migrations/0048_marketplace_entry_trees.sql +8 -0
  618. package/src/migrations/0049_plugin_upgrades.sql +37 -0
  619. package/src/migrations/0050_bootstrap.sql +53 -0
  620. package/src/migrations/0051_claude_compat.sql +26 -0
  621. package/src/migrations/0052_conversations_account_agent_idx.sql +5 -0
  622. package/src/migrations/0053_subagents.sql +73 -0
  623. package/src/migrations/0054_subagent_wait_expiry.sql +7 -0
  624. package/src/migrations/0055_subagent_parent_indexes.sql +10 -0
  625. package/src/migrations/0056_approval_reason.sql +3 -0
  626. package/src/migrations/0057_conversation_titles.sql +11 -0
  627. package/src/migrations/0058_conversation_selection.sql +4 -0
  628. package/src/migrations/0059_conversation_queue.sql +22 -0
  629. package/src/migrations/0060_file_previewers.sql +10 -0
  630. package/src/migrations/0061_queue_selection.sql +5 -0
  631. package/src/migrations/0062_queued_skill.sql +8 -0
@@ -0,0 +1,46 @@
1
+ import { type ObjectStore } from "@capybara-hq/plugin-sdk";
2
+ import type { KernelConfig } from "../config/schema.js";
3
+ import { type ExtensionCli } from "../extensions/cli.js";
4
+ import type { KernelLogger } from "../log.js";
5
+ import { CatalogService } from "./catalog.service.js";
6
+ import { PluginImport } from "./plugin-import.js";
7
+ /** {@link openCatalogCli}'s result: the extension CLI context plus the catalog services. */
8
+ export interface CatalogCli extends ExtensionCli {
9
+ catalog: CatalogService;
10
+ /** Plugin import (prepare / confirm). The CLI acts without an account (actor `null`). */
11
+ imports: PluginImport;
12
+ }
13
+ /** What the CLI can do with the deployment's object store, and why not when it cannot. */
14
+ export type CliObjectStore = {
15
+ store: ObjectStore;
16
+ } | {
17
+ store: undefined;
18
+ reason: string;
19
+ };
20
+ /**
21
+ * Sets up the deployment's object-store extension inside the CLI process. The CLI hosts no
22
+ * extensions, so this runs only the provider's `setup` with a context that offers `config` and
23
+ * `provide` (any other ctx access fails). It uses a provider only when replicas would load it:
24
+ * - a config-declared one: its permissions are approved and its deployment config is valid;
25
+ * - else an install record desired enabled (e.g. the bootstrap plugin object-store-s3) whose
26
+ * reviewed manifest provides `object-store@1` and whose name no config-declared extension takes:
27
+ * a package with migrations has had them run for its sha256 (`migrated_sha`; the CLI never
28
+ * migrates), its package's permissions are covered by the approved snapshot (or `autoApprove`),
29
+ * the package syncs into `syncDir` (checked against its sha256), its module matches the reviewed
30
+ * manifest, and its deployment config is valid.
31
+ * Config-declared providers are tried first, then install records by name.
32
+ */
33
+ export declare function loadCliObjectStore(cli: Pick<ExtensionCli, "inspected" | "deploymentConfigs" | "deploymentConfigOf" | "approvals" | "config" | "configIssues" | "installs" | "packageSet" | "readPackage">, log: Pick<KernelLogger, "warn">, syncDir: string): Promise<CliObjectStore>;
34
+ /**
35
+ * The CLI's plugin catalog context (`capybara plugins *`): {@link openExtensionCli} plus
36
+ * {@link PluginImport} and {@link CatalogService}. Imports run with actor `null` (the operator of the
37
+ * deployment, like `capybara extensions install`: no enterprise-admin re-check, audits without an
38
+ * actor, permission snapshots written with source `cli`). Files of the plugin (skills, connector
39
+ * templates, icons) go to the deployment's object store, set up in-process from the declared or
40
+ * installed object-store extension (see {@link loadCliObjectStore}; an installed package is synced
41
+ * into a temporary directory removed on `close`); connector templates of connectors the
42
+ * plugin does not bring are checked statically only (the CLI loads no connector).
43
+ */
44
+ export declare function openCatalogCli(config: KernelConfig, log: KernelLogger, opts?: {
45
+ resolveFrom?: string;
46
+ }): Promise<CatalogCli>;
@@ -0,0 +1,211 @@
1
+ import { mkdtemp, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { OBJECT_STORE_EXTENSION_POINT, } from "@capybara-hq/plugin-sdk";
5
+ import { ApiError } from "../errors.js";
6
+ import { planApprovals, snapshotCovers } from "../extensions/approvals.js";
7
+ import { openExtensionCli } from "../extensions/cli.js";
8
+ import { assertSecretsReachable } from "../extensions/host.js";
9
+ import { importExtensionModule, matchesSection } from "../extensions/instance.js";
10
+ import { packageRootOf, syncPackage } from "../extensions/sync.js";
11
+ import { packagePath } from "../packages/tgz.js";
12
+ import { StorageService } from "../storage/storage.service.js";
13
+ import { CatalogService } from "./catalog.service.js";
14
+ import { PluginImport } from "./plugin-import.js";
15
+ /**
16
+ * Sets up the deployment's object-store extension inside the CLI process. The CLI hosts no
17
+ * extensions, so this runs only the provider's `setup` with a context that offers `config` and
18
+ * `provide` (any other ctx access fails). It uses a provider only when replicas would load it:
19
+ * - a config-declared one: its permissions are approved and its deployment config is valid;
20
+ * - else an install record desired enabled (e.g. the bootstrap plugin object-store-s3) whose
21
+ * reviewed manifest provides `object-store@1` and whose name no config-declared extension takes:
22
+ * a package with migrations has had them run for its sha256 (`migrated_sha`; the CLI never
23
+ * migrates), its package's permissions are covered by the approved snapshot (or `autoApprove`),
24
+ * the package syncs into `syncDir` (checked against its sha256), its module matches the reviewed
25
+ * manifest, and its deployment config is valid.
26
+ * Config-declared providers are tried first, then install records by name.
27
+ */
28
+ export async function loadCliObjectStore(cli, log, syncDir) {
29
+ const providers = cli.inspected.filter((p) => p.manifest.provides.includes(OBJECT_STORE_EXTENSION_POINT));
30
+ const declared = new Set(cli.inspected.map((p) => p.manifest.name));
31
+ const installed = (await cli.installs.desired()).filter((d) => !declared.has(d.name) &&
32
+ (d.section.manifest?.provides ?? []).includes(OBJECT_STORE_EXTENSION_POINT));
33
+ if (providers.length === 0 && installed.length === 0) {
34
+ return { store: undefined, reason: "no object-store extension is declared or installed" };
35
+ }
36
+ const autoApprove = cli.config.extensionPermissions.autoApprove;
37
+ const sets = new Map(cli.inspected.map((p) => [p.manifest.name, p.permissions]));
38
+ const snapshots = await cli.approvals.all();
39
+ const decisions = planApprovals(cli.inspected.map((p) => p.manifest), sets, snapshots, { autoApprove });
40
+ const reasons = [];
41
+ /** Runs `setup` with the restricted context; the store it provided, or undefined (reason noted). */
42
+ const setUp = async (manifest, config) => {
43
+ const name = manifest.name;
44
+ let store;
45
+ const ctx = new Proxy({
46
+ config,
47
+ provide(point, impl) {
48
+ if (point === OBJECT_STORE_EXTENSION_POINT)
49
+ store = impl;
50
+ },
51
+ }, {
52
+ get(target, prop, receiver) {
53
+ if (prop in target)
54
+ return Reflect.get(target, prop, receiver);
55
+ throw new Error(`the CLI does not support ctx.${String(prop)}`);
56
+ },
57
+ });
58
+ try {
59
+ // biome-ignore lint/suspicious/noExplicitAny: a restricted context stands in for the full one
60
+ await manifest.setup(ctx);
61
+ }
62
+ catch (err) {
63
+ log.warn("the CLI cannot set up the object store extension", { plugin: name, err });
64
+ reasons.push(`${name} needs more than ctx.config and ctx.provide`);
65
+ return undefined;
66
+ }
67
+ if (!store)
68
+ reasons.push(`${name} provided no object store`);
69
+ return store;
70
+ };
71
+ for (const provider of providers) {
72
+ const name = provider.manifest.name;
73
+ const decision = decisions.find((d) => d.plugin === name);
74
+ if (decision?.action === "pending") {
75
+ reasons.push(`${name} awaits permission approval`);
76
+ continue;
77
+ }
78
+ const hasConfig = provider.manifest.config?.deployment !== undefined;
79
+ if (cli.configIssues.has(name) || (hasConfig && !cli.deploymentConfigs.has(name))) {
80
+ reasons.push(`${name} is not configured (pending deployment config)`);
81
+ continue;
82
+ }
83
+ const store = await setUp(provider.manifest, cli.deploymentConfigs.get(name) ?? {});
84
+ if (store)
85
+ return { store };
86
+ }
87
+ for (const d of installed) {
88
+ // Replicas set it up only after its migrations ran (ensureMigrated records migrated_sha); the
89
+ // CLI never migrates, so a package whose migrations have not run for this sha is skipped
90
+ if (d.section.migrations !== undefined && d.migratedSha !== d.sha256) {
91
+ reasons.push(`${d.name} awaits its migrations (a replica runs them when it loads it)`);
92
+ continue;
93
+ }
94
+ let set;
95
+ try {
96
+ set = await cli.packageSet(d.sha256);
97
+ }
98
+ catch (err) {
99
+ log.warn("the CLI cannot read an installed object store package", { plugin: d.name, err });
100
+ reasons.push(`${d.name}: its package cannot be read`);
101
+ continue;
102
+ }
103
+ if (!autoApprove && !snapshotCovers(snapshots.get(d.name), set)) {
104
+ reasons.push(`${d.name} awaits permission approval`);
105
+ continue;
106
+ }
107
+ let manifest;
108
+ try {
109
+ const url = await syncPackage(syncDir, d.name, d.sha256, { get: (sha) => cli.readPackage(sha) }, { maxBytes: cli.config.packages.maxBytes });
110
+ manifest = await importExtensionModule(url, d.name, packageRootOf(url, packagePath(d.section.entry)));
111
+ assertSecretsReachable(manifest);
112
+ }
113
+ catch (err) {
114
+ log.warn("the CLI cannot load an installed object store extension", { plugin: d.name, err });
115
+ reasons.push(`${d.name} cannot be loaded`);
116
+ continue;
117
+ }
118
+ if (!matchesSection(manifest, d.name, d.section.manifest)) {
119
+ reasons.push(`${d.name}: its module does not match the reviewed manifest`);
120
+ continue;
121
+ }
122
+ const config = await cli.deploymentConfigOf(d.name, manifest.config?.deployment);
123
+ if (!config.ok) {
124
+ reasons.push(`${d.name} is not configured (pending deployment config)`);
125
+ continue;
126
+ }
127
+ const store = await setUp(manifest, config.value);
128
+ if (store)
129
+ return { store };
130
+ }
131
+ return { store: undefined, reason: reasons.join("; ") };
132
+ }
133
+ /** `storage.unavailable` with the CLI's constraint spelled out (the generic text points to a plugin install). */
134
+ class CliStorage extends StorageService {
135
+ reason;
136
+ constructor(deps, reason) {
137
+ super(deps);
138
+ this.reason = reason;
139
+ }
140
+ assertAvailable() {
141
+ if (this.available)
142
+ return;
143
+ throw new ApiError("storage.unavailable", `Object storage is not available to the CLI (${this.reason ?? "unknown"}). The CLI can use only a config-declared or installed and enabled object-store extension that is approved, configured and whose setup needs only ctx.config and ctx.provide; import this plugin in the admin console instead`);
144
+ }
145
+ }
146
+ /**
147
+ * The CLI's plugin catalog context (`capybara plugins *`): {@link openExtensionCli} plus
148
+ * {@link PluginImport} and {@link CatalogService}. Imports run with actor `null` (the operator of the
149
+ * deployment, like `capybara extensions install`: no enterprise-admin re-check, audits without an
150
+ * actor, permission snapshots written with source `cli`). Files of the plugin (skills, connector
151
+ * templates, icons) go to the deployment's object store, set up in-process from the declared or
152
+ * installed object-store extension (see {@link loadCliObjectStore}; an installed package is synced
153
+ * into a temporary directory removed on `close`); connector templates of connectors the
154
+ * plugin does not bring are checked statically only (the CLI loads no connector).
155
+ */
156
+ export async function openCatalogCli(config, log, opts = {}) {
157
+ const cli = await openExtensionCli(config, log, opts);
158
+ let syncDir;
159
+ const removeSyncDir = async () => {
160
+ if (syncDir !== undefined)
161
+ await rm(syncDir, { recursive: true, force: true }).catch(() => { });
162
+ };
163
+ try {
164
+ syncDir = await mkdtemp(join(tmpdir(), "capybara-cli-"));
165
+ const { store, ...rest } = await loadCliObjectStore(cli, log, syncDir);
166
+ const storage = new CliStorage({
167
+ provider: () => store,
168
+ plugins: async () => cli.inspected.map((p) => p.manifest.name),
169
+ }, "reason" in rest ? rest.reason : undefined);
170
+ const declared = new Map(cli.inspected.map((p) => [p.manifest.name, p.source]));
171
+ const imports = new PluginImport({
172
+ db: cli.db,
173
+ config: () => config,
174
+ storage,
175
+ installs: cli.installs,
176
+ ops: cli.ops,
177
+ blobs: { get: (sha256) => cli.readPackage(sha256) },
178
+ declared: () => declared,
179
+ // The CLI loads no connectors: templates get static checks only (the org install re-checks)
180
+ findConnector: () => undefined,
181
+ connectorsLoaded: false,
182
+ log,
183
+ });
184
+ const catalog = new CatalogService({
185
+ db: cli.db,
186
+ config: () => config,
187
+ installs: cli.installs,
188
+ ops: cli.ops,
189
+ pluginImport: imports,
190
+ // Unreachable from the CLI: only marketplace imports (CatalogService.importFromMarketplace)
191
+ // download archives, and the CLI offers file, npm and direct git imports only.
192
+ fetchArchive: () => Promise.reject(new ApiError("internal", "marketplace imports are not available in the CLI")),
193
+ // Only marketplace imports send a marketplace token; a direct git import has none
194
+ marketplaceToken: async () => undefined,
195
+ });
196
+ return {
197
+ ...cli,
198
+ catalog,
199
+ imports,
200
+ async close() {
201
+ await cli.close();
202
+ await removeSyncDir();
203
+ },
204
+ };
205
+ }
206
+ catch (e) {
207
+ await cli.close();
208
+ await removeSyncDir();
209
+ throw e;
210
+ }
211
+ }
@@ -0,0 +1,127 @@
1
+ import { type NetPolicy } from "../net/public-address.js";
2
+ import { type MarketplaceNetCode } from "./marketplace-fetch.js";
3
+ /**
4
+ * Reading plugins from git (spec §5.1, §5.2; Decision 2): isomorphic-git (pure JS, any smart-HTTP
5
+ * host) over the kernel's public-address network layer. The repo is hostile input:
6
+ * - https smart HTTP only (`GET info/refs` + `POST git-upload-pack`), each request through
7
+ * `net/safeFetch` (public addresses, pinned connection, no redirects); the token goes only to
8
+ * `tokenOrigin`;
9
+ * - one commit, depth 1, no tags, no submodules (never fetched); the pack is at most `maxBytes`;
10
+ * - before isomorphic-git indexes the pack (which inflates every object), the pack is scanned with
11
+ * bounded inflation: at most {@link GIT_LIMITS}`.maxObjects` objects and 4 × `maxBytes` of declared
12
+ * content in all, so a deflate bomb is refused before it is expanded;
13
+ * - files are read from the object store (`readTree` / `readBlob`), never checked out; symlinks and
14
+ * submodule entries under `path` are refused; at most 5000 files and 4 × `maxBytes`; LFS pointer
15
+ * files are ordinary files;
16
+ * - the object store is a temp dir removed after each operation; 120 s per operation.
17
+ */
18
+ export declare const GIT_LIMITS: {
19
+ readonly maxFiles: 5000;
20
+ /** Objects in one pack (a depth-1 commit: the commit, its trees and blobs). */
21
+ readonly maxObjects: 20000;
22
+ /** Unpacked bytes (pack content and files read) at most this × `maxBytes`. */
23
+ readonly unpackedFactor: 4;
24
+ readonly timeoutMs: 120000;
25
+ };
26
+ /** `./a/b/` -> `a/b`; the root is `.`. */
27
+ export declare const normalGitPath: (path: string | undefined) => string;
28
+ /**
29
+ * The identity of a git location, `<host>/<repo>:<path>` (host lower case, the repo without a
30
+ * leading `/` or a trailing `.git`, `path` as {@link normalGitPath}).
31
+ */
32
+ export declare function gitLocationIdentity(l: {
33
+ host: string;
34
+ repo: string;
35
+ path: string;
36
+ }): string;
37
+ /** {@link gitLocationIdentity} of a repo URL and a path in it. */
38
+ export declare function gitUrlIdentity(url: string, path: string | undefined): string;
39
+ export type GitLocation = {
40
+ url: string;
41
+ ref?: string;
42
+ commit?: string;
43
+ path?: string;
44
+ };
45
+ export type GitOptions = {
46
+ net: NetPolicy;
47
+ token?: string;
48
+ /** The token is sent only to this origin (the marketplace URL's). */
49
+ tokenOrigin?: string;
50
+ signal: AbortSignal;
51
+ /** `packages.maxBytes`: the largest pack. */
52
+ maxBytes: number;
53
+ /** Where the temp object store is created (default the OS temp dir); tests only. */
54
+ tempRoot?: string;
55
+ };
56
+ export type GitSourceErrorCode = "marketplace.git_failed" | "marketplace.git_too_large" | "marketplace.git_unsupported_entry";
57
+ /**
58
+ * What a git failure names, for API error details (localized by the web): `host` the host the
59
+ * network rules refused, `path` the refused tree entry (symlink, submodule, invalid name), `hint`
60
+ * `git_suffix` when a redirect came from a repo URL not ending in `.git` (GitLab, Gitea redirect it).
61
+ */
62
+ export interface GitErrorDetail {
63
+ host?: string;
64
+ path?: string;
65
+ hint?: "git_suffix";
66
+ }
67
+ /** A git read failed. English message without the token; `netCode` when the network rules refused. */
68
+ export declare class GitSourceError extends Error {
69
+ readonly code: GitSourceErrorCode;
70
+ readonly netCode: MarketplaceNetCode | undefined;
71
+ readonly detail: GitErrorDetail;
72
+ constructor(code: GitSourceErrorCode, message: string, options?: {
73
+ cause?: unknown;
74
+ netCode?: MarketplaceNetCode;
75
+ detail?: GitErrorDetail;
76
+ });
77
+ }
78
+ /**
79
+ * The details of a git failure's API error: the host (the one the network rules refused, else the
80
+ * repo's), the repo path, the ref or commit asked for, and the refused entry. Lets the web name them
81
+ * in localized copy; the English message stays for logs and API users.
82
+ */
83
+ export declare function gitErrorDetails(e: GitSourceError, loc: Pick<GitLocation, "url" | "ref" | "commit">): Record<string, string>;
84
+ /** `owner/repo` -> `https://github.com/owner/repo.git`; anything else is returned unchanged. */
85
+ export declare function expandGitUrl(input: string): string;
86
+ /**
87
+ * The commit to read (40 lower-case hex): `commit` when given (it wins over `ref`), otherwise the
88
+ * head of `ref` (a branch, a tag or a full `refs/…` name) or of the remote HEAD.
89
+ */
90
+ export declare function resolveGitCommit(loc: GitLocation, o: GitOptions): Promise<string>;
91
+ /**
92
+ * Walks a pack (v2/v3) with bounded inflation before anything else expands it: object count and the
93
+ * declared content sizes (objects, and delta results) must fit; an object that inflates beyond its
94
+ * declared size is refused.
95
+ */
96
+ export declare function scanPack(pack: Uint8Array, maxUnpacked: number): void;
97
+ /**
98
+ * The files under `path` at `commit` (paths relative to `path`, `/`-separated, sorted). Throws
99
+ * {@link GitSourceError}: `marketplace.git_failed` (network, server, missing commit or path),
100
+ * `marketplace.git_too_large` (limits), `marketplace.git_unsupported_entry` (symlink, submodule).
101
+ */
102
+ export declare function readGitTree(loc: GitLocation & {
103
+ commit: string;
104
+ }, o: ReadGitTreeOptions): Promise<Map<string, Uint8Array>>;
105
+ /** Options of {@link readGitTree}. */
106
+ export type ReadGitTreeOptions = GitOptions & {
107
+ /**
108
+ * Which entries under `path` to read (`path` relative to it): a tree for which it returns false
109
+ * is not descended, a blob is not read. Entries left out are not checked either (a symlink
110
+ * elsewhere in a marketplace repo does not matter to its manifest). Default: everything.
111
+ */
112
+ include?: (path: string, type: "tree" | "blob") => boolean;
113
+ };
114
+ /**
115
+ * {@link readGitTree}, plus the git tree oids of directories at the same commit: `trees` gets the
116
+ * files read and returns directory paths relative to the repository root (`.` is the root); each
117
+ * one that exists and is a directory gets its tree oid (equal oids mean equal contents, so a
118
+ * plugin directory that did not change keeps its oid across commits).
119
+ */
120
+ export declare function readGitTreeAndOids(loc: GitLocation & {
121
+ commit: string;
122
+ }, o: ReadGitTreeOptions & {
123
+ trees?: (files: Map<string, Uint8Array>) => string[];
124
+ }): Promise<{
125
+ files: Map<string, Uint8Array>;
126
+ trees: Map<string, string>;
127
+ }>;