@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,23 @@
1
+ import { z } from "zod";
2
+ import { type Principal } from "../identity/principal.js";
3
+ import { type OrgContext } from "../orgs/org.guard.js";
4
+ import type { InvocableSkill, SkillInvoker } from "./invoke.js";
5
+ declare const ListQuery: z.ZodObject<{
6
+ conversationId: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strict>;
8
+ /**
9
+ * The composer's `/` menu (phase D spec §4.5): `GET /api/v1/orgs/:orgId/agents/:agentId/
10
+ * invocable-skills?conversationId=` lists the agent's effective skills a person can invoke, sorted
11
+ * by name. Agent-scoped because a conversation is created on its first send. People only
12
+ * (`agents.use`, human principals: invocations are sent from a conversation); an agent the caller
13
+ * cannot use → 404 `agent.not_found`; a `conversationId` that is not the caller's conversation with
14
+ * this agent → 404 `conversation.not_found` (with it, that conversation's trial drafts apply).
15
+ */
16
+ export declare class InvocableSkillsController {
17
+ private readonly invoker;
18
+ constructor(invoker: SkillInvoker);
19
+ list(principal: Principal, org: OrgContext, agentId: string, q: z.infer<typeof ListQuery>): Promise<{
20
+ skills: InvocableSkill[];
21
+ }>;
22
+ }
23
+ export {};
@@ -0,0 +1,50 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Controller, Get, Header, Inject, Param, Query } from "@nestjs/common";
11
+ import { z } from "zod";
12
+ import { SKILL_INVOKER } from "../http/tokens.js";
13
+ import { ZodPipe } from "../http/zod.pipe.js";
14
+ import { CurrentPrincipal, requireUser } from "../identity/principal.js";
15
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
16
+ const ListQuery = z.object({ conversationId: z.string().min(1).max(100).optional() }).strict();
17
+ /**
18
+ * The composer's `/` menu (phase D spec §4.5): `GET /api/v1/orgs/:orgId/agents/:agentId/
19
+ * invocable-skills?conversationId=` lists the agent's effective skills a person can invoke, sorted
20
+ * by name. Agent-scoped because a conversation is created on its first send. People only
21
+ * (`agents.use`, human principals: invocations are sent from a conversation); an agent the caller
22
+ * cannot use → 404 `agent.not_found`; a `conversationId` that is not the caller's conversation with
23
+ * this agent → 404 `conversation.not_found` (with it, that conversation's trial drafts apply).
24
+ */
25
+ let InvocableSkillsController = class InvocableSkillsController {
26
+ invoker;
27
+ constructor(invoker) {
28
+ this.invoker = invoker;
29
+ }
30
+ async list(principal, org, agentId, q) {
31
+ const p = requireUser(principal);
32
+ return {
33
+ skills: await this.invoker.listFor(org.orgId, agentId, p.account.id, q.conversationId),
34
+ };
35
+ }
36
+ };
37
+ __decorate([
38
+ Get(),
39
+ Header("cache-control", "private, no-store"),
40
+ OrgAction("agents.use"),
41
+ __param(0, CurrentPrincipal()),
42
+ __param(1, CurrentOrg()),
43
+ __param(2, Param("agentId")),
44
+ __param(3, Query(new ZodPipe(ListQuery)))
45
+ ], InvocableSkillsController.prototype, "list", null);
46
+ InvocableSkillsController = __decorate([
47
+ Controller("api/v1/orgs/:orgId/agents/:agentId/invocable-skills"),
48
+ __param(0, Inject(SKILL_INVOKER))
49
+ ], InvocableSkillsController);
50
+ export { InvocableSkillsController };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The SKILL.md invocation keys (package ecosystem phase D) and their lenient reading: readers of
3
+ * stored files (catalog install and upgrade) and the Claude Code translation drop a key the strict
4
+ * `parseSkillMd` checks would refuse, with the reason, instead of refusing the skill or storing an
5
+ * invocation nobody can use. Uploads, native imports and `skill_write` stay strict.
6
+ */
7
+ /** The frontmatter keys that make up a skill's invocation metadata. */
8
+ export declare const INVOCATION_KEYS: readonly ["disable-model-invocation", "user-invocable", "context", "agent", "argument-hint", "arguments"];
9
+ /** One dropped key (or `a, b` for a pair) and the strict check's reason (English). */
10
+ export interface DroppedInvocationKey {
11
+ key: string;
12
+ problem: string;
13
+ }
14
+ /**
15
+ * The frontmatter without the invocation keys the strict checks refuse (each checked on its own by
16
+ * `parseSkillMd`, so the rules stay in one place), and what was dropped. When both
17
+ * `disable-model-invocation: true` and `user-invocable: false` remain, both go: the skill is then an
18
+ * ordinary one, as it was before phase D. Other keys are untouched.
19
+ */
20
+ export declare function cleanInvocationKeys(fm: Readonly<Record<string, unknown>>): {
21
+ frontmatter: Record<string, unknown>;
22
+ dropped: DroppedInvocationKey[];
23
+ };
@@ -0,0 +1,44 @@
1
+ import { parseSkillMd } from "@capybara-hq/plugin-sdk";
2
+ /**
3
+ * The SKILL.md invocation keys (package ecosystem phase D) and their lenient reading: readers of
4
+ * stored files (catalog install and upgrade) and the Claude Code translation drop a key the strict
5
+ * `parseSkillMd` checks would refuse, with the reason, instead of refusing the skill or storing an
6
+ * invocation nobody can use. Uploads, native imports and `skill_write` stay strict.
7
+ */
8
+ /** The frontmatter keys that make up a skill's invocation metadata. */
9
+ export const INVOCATION_KEYS = [
10
+ "disable-model-invocation",
11
+ "user-invocable",
12
+ "context",
13
+ "agent",
14
+ "argument-hint",
15
+ "arguments",
16
+ ];
17
+ const NOBODY = "a skill with disable-model-invocation: true and user-invocable: false cannot be used";
18
+ /**
19
+ * The frontmatter without the invocation keys the strict checks refuse (each checked on its own by
20
+ * `parseSkillMd`, so the rules stay in one place), and what was dropped. When both
21
+ * `disable-model-invocation: true` and `user-invocable: false` remain, both go: the skill is then an
22
+ * ordinary one, as it was before phase D. Other keys are untouched.
23
+ */
24
+ export function cleanInvocationKeys(fm) {
25
+ const frontmatter = { ...fm };
26
+ const dropped = [];
27
+ for (const key of INVOCATION_KEYS) {
28
+ const value = frontmatter[key];
29
+ if (value === undefined)
30
+ continue;
31
+ const probe = JSON.stringify({ name: "x", description: "x", [key]: value });
32
+ const r = parseSkillMd(`---\n${probe}\n---\n`);
33
+ if ("errors" in r) {
34
+ dropped.push({ key, problem: r.errors.join("; ") });
35
+ delete frontmatter[key];
36
+ }
37
+ }
38
+ if (frontmatter["disable-model-invocation"] === true && frontmatter["user-invocable"] === false) {
39
+ delete frontmatter["disable-model-invocation"];
40
+ delete frontmatter["user-invocable"];
41
+ dropped.push({ key: "disable-model-invocation, user-invocable", problem: NOBODY });
42
+ }
43
+ return { frontmatter, dropped };
44
+ }
@@ -0,0 +1,135 @@
1
+ import { type Logger } from "@capybara-hq/plugin-sdk";
2
+ import type { AgentsService } from "../agents/agents.service.js";
3
+ import type { AgentDefinition } from "../agents/definition.js";
4
+ import type { EventPayload } from "../conversations/events.js";
5
+ import type { KernelDb } from "../db/kernel-schema.js";
6
+ import { ApiError } from "../errors.js";
7
+ import type { StorageService } from "../storage/storage.service.js";
8
+ /**
9
+ * A person's skill invocation (phase D spec §3, §4): the `/` menu's list of the agent's invocable
10
+ * skills, and the rendering of `/name args` into the model-visible text of their message. The skill
11
+ * is resolved among the agent's effective skills **at send time** (its current version, the
12
+ * conversation's trial drafts), its SKILL.md is read from object storage and checked against the
13
+ * manifest, and it is rendered by the SDK; nothing is executed (A1). The caller appends the text as
14
+ * `content[0]` of the `user_message` together with {@link RenderedInvocation.skill}.
15
+ */
16
+ /** One skill of the `/` menu (`GET …/agents/:agentId/invocable-skills`). */
17
+ export interface InvocableSkill {
18
+ id: string;
19
+ name: string;
20
+ /** The plugin (catalog item) it came from. */
21
+ plugin?: string;
22
+ description: string;
23
+ version: number;
24
+ argumentHint?: string;
25
+ arguments?: string[];
26
+ /** Manual-only: not in the model's catalog. */
27
+ manual: boolean;
28
+ /** Runs as a sub-agent when a person invokes it. */
29
+ fork: boolean;
30
+ }
31
+ /** The `skill` field of a `user_message`. */
32
+ export type InvocationRecord = NonNullable<EventPayload<"user_message">["skill"]>;
33
+ /** The result of {@link SkillInvoker.prepare}. */
34
+ export interface RenderedInvocation {
35
+ /** The model-visible text of the person's message (`content[0]`). */
36
+ text: string;
37
+ skill: InvocationRecord;
38
+ /**
39
+ * Fork only: the rendered skill without the lead sentence (the sub-agent's task). Checks the
40
+ * size at send time; the dispatch renders it again from the record ({@link SkillInvoker.renderTask}).
41
+ */
42
+ task?: string;
43
+ /** Fork only: the requested sub-agent type did not resolve (recorded at dispatch, §6.2). */
44
+ warning?: string;
45
+ }
46
+ /** `/name args` at the very start of a message, or null (`/etc/hosts`, ` /x`, `/Upper`). */
47
+ export declare const parseSlashCommand: (text: string) => {
48
+ name: string;
49
+ args: string;
50
+ } | null;
51
+ /** Why a person cannot invoke a skill (`skill.not_invocable` details). */
52
+ export type NotInvocableReason = "not_found" | "not_user_invocable";
53
+ export declare const notInvocable: (reason: NotInvocableReason, name: string) => ApiError;
54
+ /**
55
+ * Whether the skill a queued invocation recorded is still one a person can invoke in this
56
+ * conversation (phase D Task 9, checked again at dispatch): the same skill (by id) among the
57
+ * agent's effective skills now, with `user` not false. Its version may have changed: the queued
58
+ * text stays as rendered when queued. Null when it is, else the reason.
59
+ */
60
+ export declare function recordedSkillBlocked(db: KernelDb, a: {
61
+ orgId: string;
62
+ agentId: string;
63
+ agent: Pick<AgentDefinition, "skills">;
64
+ conversationId: string;
65
+ skillId: string;
66
+ }): Promise<NotInvocableReason | null>;
67
+ /** The model-visible text of a fork invocation in the parent's log (spec §6.3, frozen). */
68
+ export declare const forkLeadText: (name: string, agentType: string, args: string) => string;
69
+ /** The warning recorded when a forked skill's `agent` does not resolve (spec §6.2). */
70
+ export declare const forkAgentUnknownText: (name: string, agent: string) => string;
71
+ export interface SkillInvokerDeps {
72
+ db: KernelDb;
73
+ storage: StorageService;
74
+ /** For {@link SkillInvoker.listFor} (the HTTP route's access check). */
75
+ agents?: Pick<AgentsService, "get">;
76
+ /** An unreadable SKILL.md is logged at `error` (skill id, version, source), as pinned skills. */
77
+ log?: Pick<Logger, "error">;
78
+ }
79
+ export declare class SkillInvoker {
80
+ private readonly d;
81
+ constructor(d: SkillInvokerDeps);
82
+ /**
83
+ * The `/` menu for `accountId`: the agent must be usable by them (`agent.not_found`), and with
84
+ * `conversationId` the conversation must be theirs and the agent's (`conversation.not_found`);
85
+ * then its trial drafts apply.
86
+ */
87
+ listFor(orgId: string, agentId: string, accountId: string, conversationId?: string): Promise<InvocableSkill[]>;
88
+ /**
89
+ * The agent's effective skills a person can invoke (`user` not false), sorted by name (code
90
+ * point order), model-invocable and manual-only alike (spec §3.1).
91
+ */
92
+ list(a: {
93
+ orgId: string;
94
+ agentId: string;
95
+ agent: Pick<AgentDefinition, "skills">;
96
+ conversationId?: string;
97
+ }): Promise<InvocableSkill[]>;
98
+ /**
99
+ * Resolves `name` among the agent's effective skills now, reads its SKILL.md and renders the
100
+ * invocation (spec §4.2, §4.3, §6.3). Refusals: `skill.not_invocable` (400); arguments or a
101
+ * rendered text over the limits → `validation_failed` (400); a storage failure or a SKILL.md
102
+ * that fails its integrity check → `storage.unavailable` (503). Nothing is written here.
103
+ */
104
+ prepare(a: {
105
+ orgId: string;
106
+ agentId: string;
107
+ /** Absent for the first message of a conversation not created yet. */
108
+ conversationId?: string;
109
+ agent: AgentDefinition;
110
+ name: string;
111
+ args: string;
112
+ }): Promise<RenderedInvocation>;
113
+ /**
114
+ * The task of a fork invocation's sub-agent (spec §6.2), rendered at dispatch from the version
115
+ * the person's message recorded (`skill.{id, source, version, arguments}`), never by name, so a
116
+ * skill changed since the send cannot run another version than the frozen lead names (batch 2
117
+ * review m4). The same `<skill_invocation>` text as the inline form without the lead sentence.
118
+ * `warning`: the skill asked for a sub-agent type that did not resolve (the recorded `agentType`
119
+ * is `general-purpose` for an `agent` other than Claude's built-in types). Throws
120
+ * `storage.unavailable` (`skill_unreadable`) when the version is gone or its SKILL.md cannot be
121
+ * read, plain `storage.unavailable` when storage is down. `task` renders the text for the
122
+ * sub-agent's effective definition: the shell-injection line only when the sub-agent has
123
+ * `sandbox_bash` (batch 3 review m1).
124
+ */
125
+ renderTask(a: {
126
+ orgId: string;
127
+ conversationId: string;
128
+ skill: InvocationRecord;
129
+ }): Promise<{
130
+ task: (child: Pick<AgentDefinition, "tools">) => string;
131
+ warning?: string;
132
+ }>;
133
+ /** Reads and parses the version's SKILL.md (checked against the manifest), returns the body. */
134
+ private readBody;
135
+ }
@@ -0,0 +1,286 @@
1
+ import { escapeSkillInvocationTags, hasShellInjection, parseSkillMd, renderSkillBody, renderSkillInvocation, SKILL_ENTRY_FILE, SKILL_INVOCATION_LIMITS, } from "@capybara-hq/plugin-sdk";
2
+ import { ApiError } from "../errors.js";
3
+ import { isGeneralAlias, resolveSkillForkType } from "../runtime/subagents/roster.js";
4
+ import { findSkillVersion, readSkillFile, SkillIntegrityError, } from "../tools/builtins/skill-load.js";
5
+ import { invocationOf, resolveSkills } from "./catalog.js";
6
+ /** A leading `/<name>` or `/<plugin>:<name>`, then whitespace or the end (spec §3.2). */
7
+ const SLASH_COMMAND_RE = /^\/([a-z0-9-]+(?::[a-z0-9-]+)?)(?:\s|$)/;
8
+ /** `/name args` at the very start of a message, or null (`/etc/hosts`, ` /x`, `/Upper`). */
9
+ export const parseSlashCommand = (text) => {
10
+ const m = SLASH_COMMAND_RE.exec(text);
11
+ if (!m)
12
+ return null;
13
+ return { name: m[1], args: text.slice(m[0].length).trim() };
14
+ };
15
+ /** A Claude Code style qualified name `<plugin>:<skill>`. */
16
+ const QUALIFIED_RE = /^([a-z0-9][a-z0-9-]{0,63}):(.+)$/;
17
+ /** The effective skill `name` names: exactly, or `<plugin>:<name>` for a plugin's skill. */
18
+ function findSkill(all, name) {
19
+ const exact = all.find((r) => r.skill.name === name);
20
+ if (exact)
21
+ return exact;
22
+ const m = QUALIFIED_RE.exec(name);
23
+ if (!m)
24
+ return undefined;
25
+ return all.find((r) => r.skill.name === m[2] && r.skill.plugin === m[1]);
26
+ }
27
+ export const notInvocable = (reason, name) => new ApiError("skill.not_invocable", reason === "not_found"
28
+ ? `Skill "${name}" is not one of this agent's skills`
29
+ : `Skill "${name}" cannot be invoked by a person`, [{ reason }]);
30
+ /**
31
+ * Whether the skill a queued invocation recorded is still one a person can invoke in this
32
+ * conversation (phase D Task 9, checked again at dispatch): the same skill (by id) among the
33
+ * agent's effective skills now, with `user` not false. Its version may have changed: the queued
34
+ * text stays as rendered when queued. Null when it is, else the reason.
35
+ */
36
+ export async function recordedSkillBlocked(db, a) {
37
+ const found = (await resolveSkills(db, a)).find((r) => r.skill.id === a.skillId);
38
+ if (!found)
39
+ return "not_found";
40
+ return invocationOf(found.manifest).user ? null : "not_user_invocable";
41
+ }
42
+ /** The model-visible text of a fork invocation in the parent's log (spec §6.3, frozen). */
43
+ export const forkLeadText = (name, agentType, args) => escapeSkillInvocationTags(`The user ran the skill "${name}" in a sub-agent (${agentType}) with /${name}${args === "" ? "" : ` ${args}`}. The sub-agent gets the skill's instructions as its task; its report follows. Do not do the task yourself.`);
44
+ /** The warning recorded when a forked skill's `agent` does not resolve (spec §6.2). */
45
+ export const forkAgentUnknownText = (name, agent) => `Skill "${name}" asked for sub-agent type "${agent}", which this agent does not have; it ran as general-purpose.`;
46
+ export class SkillInvoker {
47
+ d;
48
+ constructor(d) {
49
+ this.d = d;
50
+ }
51
+ /**
52
+ * The `/` menu for `accountId`: the agent must be usable by them (`agent.not_found`), and with
53
+ * `conversationId` the conversation must be theirs and the agent's (`conversation.not_found`);
54
+ * then its trial drafts apply.
55
+ */
56
+ async listFor(orgId, agentId, accountId, conversationId) {
57
+ if (!this.d.agents)
58
+ throw new Error("SkillInvoker.listFor needs agents");
59
+ const agent = await this.d.agents.get(orgId, agentId, accountId);
60
+ if (conversationId !== undefined) {
61
+ const row = await this.d.db
62
+ .selectFrom("conversations")
63
+ .select("id")
64
+ .where("id", "=", conversationId)
65
+ .where("org_id", "=", orgId)
66
+ .where("account_id", "=", accountId)
67
+ .where("agent_id", "=", agentId)
68
+ .where("kind", "=", "chat")
69
+ .executeTakeFirst();
70
+ if (!row)
71
+ throw new ApiError("conversation.not_found", "Conversation not found");
72
+ }
73
+ return this.list({
74
+ orgId,
75
+ agentId,
76
+ agent: agent.definition,
77
+ ...(conversationId !== undefined && { conversationId }),
78
+ });
79
+ }
80
+ /**
81
+ * The agent's effective skills a person can invoke (`user` not false), sorted by name (code
82
+ * point order), model-invocable and manual-only alike (spec §3.1).
83
+ */
84
+ async list(a) {
85
+ const all = await resolveSkills(this.d.db, a);
86
+ const out = [];
87
+ for (const r of all) {
88
+ const inv = invocationOf(r.manifest);
89
+ if (!inv.user)
90
+ continue;
91
+ out.push({
92
+ id: r.skill.id,
93
+ name: r.skill.name,
94
+ ...(r.skill.plugin !== undefined && { plugin: r.skill.plugin }),
95
+ description: r.skill.description,
96
+ version: r.skill.version,
97
+ ...(inv.argumentHint !== undefined && { argumentHint: inv.argumentHint }),
98
+ ...(inv.arguments !== undefined && { arguments: inv.arguments }),
99
+ manual: !inv.model,
100
+ fork: inv.fork !== undefined,
101
+ });
102
+ }
103
+ return out;
104
+ }
105
+ /**
106
+ * Resolves `name` among the agent's effective skills now, reads its SKILL.md and renders the
107
+ * invocation (spec §4.2, §4.3, §6.3). Refusals: `skill.not_invocable` (400); arguments or a
108
+ * rendered text over the limits → `validation_failed` (400); a storage failure or a SKILL.md
109
+ * that fails its integrity check → `storage.unavailable` (503). Nothing is written here.
110
+ */
111
+ async prepare(a) {
112
+ const all = await resolveSkills(this.d.db, a);
113
+ const found = findSkill(all, a.name);
114
+ if (!found)
115
+ throw notInvocable("not_found", a.name);
116
+ const inv = invocationOf(found.manifest);
117
+ if (!inv.user)
118
+ throw notInvocable("not_user_invocable", a.name);
119
+ const body = await this.readBody(a.orgId, found);
120
+ const others = found.manifest.files.some((f) => f.path !== SKILL_ENTRY_FILE);
121
+ const lines = {
122
+ // the invocation itself makes the conversation's next run offer skill_load (skillLoadOffered)
123
+ ...(others && { files: "load" }),
124
+ ...(hasShellInjection(body) &&
125
+ hasBuiltin(a.agent, "sandbox_bash") && { shellHint: true }),
126
+ };
127
+ const input = {
128
+ name: a.name,
129
+ skillName: found.skill.name,
130
+ version: found.skill.version,
131
+ body,
132
+ invocation: inv,
133
+ args: a.args,
134
+ lines,
135
+ };
136
+ // a SKILL.md whose body alone renders over the limit can never be invoked: say so, rather than
137
+ // "shorten the arguments"
138
+ tooLarge(found.skill.name, () => renderSkillBody(body, inv, "", found.skill.name));
139
+ const args = a.args.trim();
140
+ const record = {
141
+ id: found.skill.id,
142
+ version: found.skill.version,
143
+ source: found.skill.source,
144
+ name: found.skill.name,
145
+ ...(found.skill.plugin !== undefined && { plugin: found.skill.plugin }),
146
+ arguments: args,
147
+ mode: inv.fork ? "fork" : "inline",
148
+ };
149
+ if (!inv.fork)
150
+ return { text: rendered(() => renderSkillInvocation(input)), skill: record };
151
+ const task = rendered(() => renderSkillInvocation({ ...input, lead: false }));
152
+ const type = await resolveSkillForkType(this.d.db, a.orgId, a.agent, inv.fork.agent, found.skill.plugin);
153
+ return {
154
+ text: forkLeadText(a.name, type.agentType, args),
155
+ skill: { ...record, agentType: type.agentType },
156
+ task,
157
+ ...(type.unknown !== undefined && {
158
+ warning: forkAgentUnknownText(a.name, type.unknown),
159
+ }),
160
+ };
161
+ }
162
+ /**
163
+ * The task of a fork invocation's sub-agent (spec §6.2), rendered at dispatch from the version
164
+ * the person's message recorded (`skill.{id, source, version, arguments}`), never by name, so a
165
+ * skill changed since the send cannot run another version than the frozen lead names (batch 2
166
+ * review m4). The same `<skill_invocation>` text as the inline form without the lead sentence.
167
+ * `warning`: the skill asked for a sub-agent type that did not resolve (the recorded `agentType`
168
+ * is `general-purpose` for an `agent` other than Claude's built-in types). Throws
169
+ * `storage.unavailable` (`skill_unreadable`) when the version is gone or its SKILL.md cannot be
170
+ * read, plain `storage.unavailable` when storage is down. `task` renders the text for the
171
+ * sub-agent's effective definition: the shell-injection line only when the sub-agent has
172
+ * `sandbox_bash` (batch 3 review m1).
173
+ */
174
+ async renderTask(a) {
175
+ const { skill } = a;
176
+ const found = await findSkillVersion(this.d.db, a, { id: skill.id, source: skill.source });
177
+ if (!found) {
178
+ this.d.log?.error("invoked skill unreadable", {
179
+ orgId: a.orgId,
180
+ skillId: skill.id,
181
+ version: skill.version,
182
+ source: skill.source,
183
+ problem: "is gone",
184
+ });
185
+ throw new ApiError("storage.unavailable", `Skill ${skill.name} is gone`, [
186
+ { reason: "skill_unreadable", skillId: skill.id, name: skill.name },
187
+ ]);
188
+ }
189
+ const body = await this.readBody(a.orgId, {
190
+ skill: { id: skill.id, name: skill.name, version: skill.version, source: skill.source },
191
+ manifest: found.manifest,
192
+ });
193
+ const inv = invocationOf(found.manifest);
194
+ const others = found.manifest.files.some((f) => f.path !== SKILL_ENTRY_FILE);
195
+ const task = (child) => renderSkillInvocation({
196
+ name: skill.name,
197
+ skillName: skill.name,
198
+ version: skill.version,
199
+ body,
200
+ invocation: inv,
201
+ args: skill.arguments,
202
+ lines: {
203
+ ...(others && { files: "load" }),
204
+ ...(hasShellInjection(body) &&
205
+ hasBuiltin(child, "sandbox_bash") && { shellHint: true }),
206
+ },
207
+ lead: false,
208
+ });
209
+ const asked = inv.fork?.agent;
210
+ const unknown = asked !== undefined && !isGeneralAlias(asked) && skill.agentType === "general-purpose";
211
+ return { task, ...(unknown && { warning: forkAgentUnknownText(skill.name, asked) }) };
212
+ }
213
+ /** Reads and parses the version's SKILL.md (checked against the manifest), returns the body. */
214
+ async readBody(orgId, r) {
215
+ const unreadable = (problem) => {
216
+ this.d.log?.error("invoked skill unreadable", {
217
+ orgId,
218
+ skillId: r.skill.id,
219
+ version: r.skill.version,
220
+ source: r.skill.source,
221
+ problem,
222
+ });
223
+ return new ApiError("storage.unavailable", `Skill ${r.skill.name} ${problem}`, [
224
+ { reason: "skill_unreadable", skillId: r.skill.id, name: r.skill.name },
225
+ ]);
226
+ };
227
+ const md = r.manifest.files.find((f) => f.path === SKILL_ENTRY_FILE);
228
+ if (!md)
229
+ throw unreadable(`has no ${SKILL_ENTRY_FILE}`);
230
+ this.d.storage.assertAvailable();
231
+ let bytes;
232
+ try {
233
+ bytes = await readSkillFile(this.d.storage.kernel(orgId), `${r.skill.source}${SKILL_ENTRY_FILE}`, md);
234
+ }
235
+ catch (e) {
236
+ if (e instanceof SkillIntegrityError)
237
+ throw unreadable("failed its integrity check");
238
+ if (e instanceof ApiError)
239
+ throw e;
240
+ throw new ApiError("storage.unavailable", "File storage is temporarily unavailable");
241
+ }
242
+ let text;
243
+ try {
244
+ text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
245
+ }
246
+ catch {
247
+ throw unreadable("is not UTF-8");
248
+ }
249
+ const parsed = parseSkillMd(text, { invocationKeys: false });
250
+ if ("errors" in parsed)
251
+ throw unreadable("cannot be parsed");
252
+ return parsed.body;
253
+ }
254
+ }
255
+ const hasBuiltin = (agent, name) => (agent.tools ?? []).some((t) => t.kind === "builtin" && t.name === name);
256
+ /** The skill's own body over the rendered limit: a 400 on `skill` naming the skill. */
257
+ function tooLarge(name, render) {
258
+ try {
259
+ render();
260
+ }
261
+ catch (e) {
262
+ if (e instanceof RangeError) {
263
+ throw new ApiError("validation_failed", "Request validation failed", [
264
+ {
265
+ path: "skill",
266
+ message: `the skill "${name}" is too large to invoke (its rendered text must be at most ${SKILL_INVOCATION_LIMITS.renderedMaxChars} characters)`,
267
+ },
268
+ ]);
269
+ }
270
+ throw e;
271
+ }
272
+ }
273
+ /** Runs an SDK render; its `RangeError` (a size limit) becomes a 400 on `text`. */
274
+ function rendered(render) {
275
+ try {
276
+ return render();
277
+ }
278
+ catch (e) {
279
+ if (e instanceof RangeError) {
280
+ throw new ApiError("validation_failed", "Request validation failed", [
281
+ { path: "text", message: `${e.message}; shorten the arguments` },
282
+ ]);
283
+ }
284
+ throw e;
285
+ }
286
+ }
@@ -0,0 +1,87 @@
1
+ import { type SkillInvocation } from "@capybara-hq/plugin-sdk";
2
+ /**
3
+ * 技能包(zip)解包与校验。zip 一律当作恶意输入:
4
+ *
5
+ * - 解析用 yauzl(3.4.0,固定版本):只信中央目录、按条目随机读取(不按本地头顺序猜),自带
6
+ * `validateEntrySizes`(实际解压出的字节数必须等于声明值)与文件名检查(绝对路径、盘符、`..`、
7
+ * `strictFileNames` 下的反斜杠)。不选 fflate:它的同步解压会先把整个条目解到内存,流式解压又按本地头顺序走,
8
+ * 遇到声明与实际不一致的恶意包更难兜住。
9
+ * - 此外自己再按**实际**解压出的字节数计数:单文件超过 {@link SKILL_LIMITS.fileBytes}、累计超过
10
+ * {@link SKILL_LIMITS.totalBytes} 立即中止;条目数上限 {@link SKILL_PACKAGE_MAX_ENTRIES};声明的压缩比
11
+ * 超过 {@link MAX_COMPRESSION_RATIO}(且解压后超过 1 MiB)视为 zip 炸弹,提前拒绝、不做解压
12
+ * (deflate 的理论上限约 1032:1,正常文本即使高度重复也远低于 1000:1;真正兜底的是按实际字节的上限);拒绝符号链接与其他非普通文件
13
+ * (外部属性里的 Unix mode)、加密条目、stored / deflate 之外的压缩方法。
14
+ * - 路径与清单规则(必须有 SKILL.md、去重、大小写冲突、控制字符、沙箱路径)见 plugin-sdk `validateSkillPackage`。
15
+ *
16
+ * 整个 zip(≤ {@link SKILL_PACKAGE_MAX_BYTES})与解出的文件(≤ 50MB)都在内存里处理。
17
+ */
18
+ /** 技能包 zip 本身的大小上限(字节)。 */
19
+ export declare const SKILL_PACKAGE_MAX_BYTES: number;
20
+ /** zip 中央目录的条目数上限(含目录项与被忽略的条目)。 */
21
+ export declare const SKILL_PACKAGE_MAX_ENTRIES = 1000;
22
+ /** 单个条目声明的「解压后 / 压缩后」比值上限(只挡近乎单一字节重复的炸弹,正常文本不会触发)。 */
23
+ export declare const MAX_COMPRESSION_RATIO = 1000;
24
+ /** 包里的一个文件(路径相对于技能根目录)。 */
25
+ export interface SkillPackageFile {
26
+ path: string;
27
+ size: number;
28
+ /** 十六进制 sha256。 */
29
+ sha256: string;
30
+ data: Uint8Array;
31
+ }
32
+ /** 解包并校验后的技能包。 */
33
+ export interface SkillPackage {
34
+ name: string;
35
+ description: string;
36
+ /** Read from the SKILL.md frontmatter (phase D). */
37
+ invocation: SkillInvocation;
38
+ files: SkillPackageFile[];
39
+ }
40
+ /**
41
+ * The `invocation` to store in a version's manifest: undefined for the defaults (a skill both the
42
+ * model and a person can invoke, with no fork, hint or named arguments), so ordinary skills keep
43
+ * their manifest unchanged.
44
+ */
45
+ export declare function storedInvocation(i: SkillInvocation): SkillInvocation | undefined;
46
+ /**
47
+ * Invalid zip or skill content (`problems` lists each one, in English). Independent of HTTP: a
48
+ * skill upload maps it to `skill.invalid_package`, an enterprise catalog import to
49
+ * `catalog.invalid_manifest`.
50
+ */
51
+ export declare class SkillArchiveError extends Error {
52
+ readonly problems: string[];
53
+ constructor(problems: string[]);
54
+ }
55
+ /**
56
+ * 外层目录规则:根目录有 SKILL.md → 原样使用;否则当且仅当全部文件都在同一个顶层目录 `D/` 下、且 `D/SKILL.md`
57
+ * 存在时,去掉 `D/`(如 GitHub 下载的 `repo-main/`;目录名不必等于技能名,技能名只取 SKILL.md 的 name,
58
+ * 沙箱路径用 `/skills/<name>/`)。其他情况(多个顶层条目、SKILL.md 只在更深的目录里)不猜,按缺少 SKILL.md 拒绝。
59
+ */
60
+ export declare function stripWrapper<T extends {
61
+ path: string;
62
+ }>(files: T[], entryFile?: string): T[];
63
+ /**
64
+ * 解包并校验技能包:返回 SKILL.md 里的 name / description 与全部文件(含 sha256)。
65
+ * 外层目录按 {@link stripWrapper} 的规则去掉。
66
+ * 任何问题 → `skill.invalid_package`(400),details 逐条列出。
67
+ */
68
+ export declare function readSkillPackage(bytes: Uint8Array): Promise<SkillPackage>;
69
+ /**
70
+ * Checks a set of skill files (paths relative to the skill root): the rules of plugin-sdk
71
+ * `validateSkillPackage`, SKILL.md strict UTF-8 with valid frontmatter. Returns its name,
72
+ * description and invocation metadata. Invalid → {@link SkillArchiveError}. `invocationKeys: false`
73
+ * (files stored before phase D, Claude Code imports) skips the invocation key checks and leaves out
74
+ * of the invocation every key they would refuse ({@link cleanInvocationKeys}).
75
+ */
76
+ export declare function checkSkillFiles(files: SkillPackageFile[], opts?: {
77
+ invocationKeys?: boolean;
78
+ }): {
79
+ name: string;
80
+ description: string;
81
+ invocation: SkillInvocation;
82
+ };
83
+ /**
84
+ * 读 zip 里的全部普通文件(规则与上限见文件头;`maxBytes` 为 zip 本身的上限),不去外层目录、不看内容。
85
+ * 不合法 → {@link SkillArchiveError}。
86
+ */
87
+ export declare function readZipFiles(bytes: Uint8Array, maxBytes: number): Promise<SkillPackageFile[]>;