@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.11

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 (1170) hide show
  1. package/bootstrap.json +85 -5
  2. package/dist/admin/admin.controller.d.ts +52 -71
  3. package/dist/admin/admin.controller.js +117 -63
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/admin.schemas.d.ts +60 -0
  7. package/dist/admin/admin.schemas.js +50 -0
  8. package/dist/admin/extensions.controller.d.ts +47 -16
  9. package/dist/admin/extensions.controller.js +94 -23
  10. package/dist/admin/extensions.schemas.d.ts +7 -0
  11. package/dist/admin/extensions.schemas.js +10 -0
  12. package/dist/admin/limit-defaults.d.ts +20 -0
  13. package/dist/admin/limit-defaults.js +10 -0
  14. package/dist/admin/setup-lock.d.ts +16 -0
  15. package/dist/admin/setup-lock.js +47 -0
  16. package/dist/admin/setup.controller.d.ts +9 -9
  17. package/dist/admin/setup.controller.js +28 -26
  18. package/dist/admin/setup.service.d.ts +20 -28
  19. package/dist/admin/setup.service.js +65 -65
  20. package/dist/agents/agent-lookup.d.ts +72 -0
  21. package/dist/agents/agent-lookup.js +208 -0
  22. package/dist/agents/agent-profile.service.d.ts +31 -0
  23. package/dist/agents/agent-profile.service.js +122 -0
  24. package/dist/agents/agents.controller.d.ts +54 -169
  25. package/dist/agents/agents.controller.js +172 -37
  26. package/dist/agents/agents.module.d.ts +10 -0
  27. package/dist/agents/agents.module.js +71 -0
  28. package/dist/agents/agents.schemas.d.ts +389 -0
  29. package/dist/agents/agents.schemas.js +126 -0
  30. package/dist/agents/agents.service.d.ts +104 -76
  31. package/dist/agents/agents.service.js +509 -383
  32. package/dist/agents/definition.d.ts +133 -21
  33. package/dist/agents/definition.js +361 -41
  34. package/dist/agents/from-template.d.ts +106 -0
  35. package/dist/agents/from-template.js +680 -0
  36. package/dist/agents/from-template.service.d.ts +72 -0
  37. package/dist/agents/from-template.service.js +178 -0
  38. package/dist/agents/instruction-files.d.ts +60 -0
  39. package/dist/agents/instruction-files.js +111 -0
  40. package/dist/agents/models.controller.d.ts +44 -6
  41. package/dist/agents/models.controller.js +84 -8
  42. package/dist/agents/org-templates.d.ts +186 -0
  43. package/dist/agents/org-templates.js +868 -0
  44. package/dist/agents/pending-connector-requests.d.ts +79 -0
  45. package/dist/agents/pending-connector-requests.js +215 -0
  46. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  47. package/dist/agents/pending-connectors.controller.js +91 -0
  48. package/dist/agents/pending-connectors.service.d.ts +62 -0
  49. package/dist/agents/pending-connectors.service.js +282 -0
  50. package/dist/agents/profile.d.ts +114 -0
  51. package/dist/agents/profile.js +55 -0
  52. package/dist/agents/readiness.controller.d.ts +26 -0
  53. package/dist/agents/readiness.controller.js +56 -0
  54. package/dist/agents/templates.controller.d.ts +78 -6
  55. package/dist/agents/templates.controller.js +154 -8
  56. package/dist/agents/templates.d.ts +132 -30
  57. package/dist/agents/templates.js +500 -46
  58. package/dist/agents/templates.schemas.d.ts +20 -0
  59. package/dist/agents/templates.schemas.js +45 -0
  60. package/dist/app.d.ts +93 -0
  61. package/dist/app.js +150 -0
  62. package/dist/background/background.controller.d.ts +38 -0
  63. package/dist/background/background.controller.js +88 -0
  64. package/dist/background/background.module.d.ts +10 -0
  65. package/dist/background/background.module.js +39 -0
  66. package/dist/background/background.schemas.d.ts +10 -0
  67. package/dist/background/background.schemas.js +16 -0
  68. package/dist/background/finish.d.ts +44 -0
  69. package/dist/background/finish.js +95 -0
  70. package/dist/background/launch-lock.d.ts +15 -0
  71. package/dist/background/launch-lock.js +40 -0
  72. package/dist/background/launch.d.ts +42 -0
  73. package/dist/background/launch.js +77 -0
  74. package/dist/background/poll.job.d.ts +56 -0
  75. package/dist/background/poll.job.js +195 -0
  76. package/dist/background/render.d.ts +23 -0
  77. package/dist/background/render.js +48 -0
  78. package/dist/background/session.d.ts +48 -0
  79. package/dist/background/session.js +80 -0
  80. package/dist/background/status.d.ts +35 -0
  81. package/dist/background/status.js +57 -0
  82. package/dist/background/stop.d.ts +68 -0
  83. package/dist/background/stop.js +244 -0
  84. package/dist/background/store.d.ts +167 -0
  85. package/dist/background/store.js +361 -0
  86. package/dist/background/store.module.d.ts +6 -0
  87. package/dist/background/store.module.js +22 -0
  88. package/dist/background/tasks.service.d.ts +77 -0
  89. package/dist/background/tasks.service.js +216 -0
  90. package/dist/background/wake-rules.d.ts +66 -0
  91. package/dist/background/wake-rules.js +113 -0
  92. package/dist/background/wake.d.ts +30 -0
  93. package/dist/background/wake.js +63 -0
  94. package/dist/catalog/admin-catalog.controller.d.ts +102 -52
  95. package/dist/catalog/admin-catalog.controller.js +222 -67
  96. package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
  97. package/dist/catalog/admin-catalog.schemas.js +92 -0
  98. package/dist/catalog/catalog-content.d.ts +264 -0
  99. package/dist/catalog/catalog-content.js +430 -0
  100. package/dist/catalog/catalog-files.d.ts +41 -0
  101. package/dist/catalog/catalog-files.js +86 -0
  102. package/dist/catalog/catalog-import.module.d.ts +7 -0
  103. package/dist/catalog/catalog-import.module.js +60 -0
  104. package/dist/catalog/catalog-items.d.ts +290 -0
  105. package/dist/catalog/catalog-items.js +677 -0
  106. package/dist/catalog/catalog-scope.service.d.ts +286 -0
  107. package/dist/catalog/catalog-scope.service.js +1196 -0
  108. package/dist/catalog/catalog.module.d.ts +12 -0
  109. package/dist/catalog/catalog.module.js +81 -0
  110. package/dist/catalog/catalog.service.d.ts +144 -207
  111. package/dist/catalog/catalog.service.js +258 -528
  112. package/dist/catalog/claude/agents.js +15 -10
  113. package/dist/catalog/claude/translate.js +3 -0
  114. package/dist/catalog/cli.d.ts +14 -3
  115. package/dist/catalog/cli.js +39 -32
  116. package/dist/catalog/component-promotion.d.ts +96 -0
  117. package/dist/catalog/component-promotion.js +395 -0
  118. package/dist/catalog/component-scope.controller.d.ts +90 -0
  119. package/dist/catalog/component-scope.controller.js +234 -0
  120. package/dist/catalog/component-scope.schemas.d.ts +118 -0
  121. package/dist/catalog/component-scope.schemas.js +97 -0
  122. package/dist/catalog/component-scope.service.d.ts +366 -0
  123. package/dist/catalog/component-scope.service.js +1115 -0
  124. package/dist/catalog/component-state.d.ts +197 -0
  125. package/dist/catalog/component-state.js +473 -0
  126. package/dist/catalog/git-source.d.ts +9 -1
  127. package/dist/catalog/git-source.js +29 -2
  128. package/dist/catalog/job-ids.d.ts +45 -0
  129. package/dist/catalog/job-ids.js +40 -0
  130. package/dist/catalog/jobs.d.ts +27 -0
  131. package/dist/catalog/jobs.js +70 -0
  132. package/dist/catalog/locks.d.ts +24 -0
  133. package/dist/catalog/locks.js +63 -0
  134. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  135. package/dist/catalog/marketplace-icons.d.ts +64 -0
  136. package/dist/catalog/marketplace-icons.js +131 -0
  137. package/dist/catalog/marketplaces.controller.d.ts +53 -44
  138. package/dist/catalog/marketplaces.controller.js +146 -51
  139. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  140. package/dist/catalog/marketplaces.schemas.js +53 -0
  141. package/dist/catalog/marketplaces.service.d.ts +136 -26
  142. package/dist/catalog/marketplaces.service.js +663 -281
  143. package/dist/catalog/org-catalog.controller.d.ts +115 -63
  144. package/dist/catalog/org-catalog.controller.js +207 -100
  145. package/dist/catalog/org-catalog.schemas.d.ts +88 -0
  146. package/dist/catalog/org-catalog.schemas.js +93 -0
  147. package/dist/catalog/org-catalog.service.d.ts +89 -216
  148. package/dist/catalog/org-catalog.service.js +434 -472
  149. package/dist/catalog/org-extension-switch.d.ts +41 -0
  150. package/dist/catalog/org-extension-switch.js +115 -0
  151. package/dist/catalog/org-extension.controller.d.ts +113 -0
  152. package/dist/catalog/org-extension.controller.js +271 -0
  153. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  154. package/dist/catalog/org-extension.schemas.js +22 -0
  155. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  156. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  157. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  158. package/dist/catalog/org-plugin-uploads.js +122 -0
  159. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  160. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  161. package/dist/catalog/owned-items.d.ts +188 -0
  162. package/dist/catalog/owned-items.js +808 -0
  163. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  164. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  165. package/dist/catalog/ownership.d.ts +172 -0
  166. package/dist/catalog/ownership.js +326 -0
  167. package/dist/catalog/platform-components.d.ts +243 -0
  168. package/dist/catalog/platform-components.js +872 -0
  169. package/dist/catalog/platform-migration.d.ts +115 -0
  170. package/dist/catalog/platform-migration.js +583 -0
  171. package/dist/catalog/plugin-import.d.ts +293 -71
  172. package/dist/catalog/plugin-import.js +1039 -281
  173. package/dist/catalog/plugin-install.d.ts +271 -66
  174. package/dist/catalog/plugin-install.js +1198 -344
  175. package/dist/catalog/plugin-package.d.ts +41 -4
  176. package/dist/catalog/plugin-package.js +140 -7
  177. package/dist/catalog/plugin-upgrade.d.ts +312 -188
  178. package/dist/catalog/plugin-upgrade.js +1371 -1065
  179. package/dist/catalog/request-rules.d.ts +65 -0
  180. package/dist/catalog/request-rules.js +217 -0
  181. package/dist/catalog/requests.service.d.ts +205 -117
  182. package/dist/catalog/requests.service.js +612 -369
  183. package/dist/catalog/reserved-names.d.ts +8 -0
  184. package/dist/catalog/reserved-names.js +42 -0
  185. package/dist/catalog/scope-orgs.d.ts +21 -0
  186. package/dist/catalog/scope-orgs.js +67 -0
  187. package/dist/catalog/scope-state.d.ts +35 -0
  188. package/dist/catalog/scope-state.js +87 -0
  189. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  190. package/dist/catalog/scope-sync-workers.js +29 -0
  191. package/dist/catalog/scope-sync.d.ts +176 -0
  192. package/dist/catalog/scope-sync.js +576 -0
  193. package/dist/catalog/scope.d.ts +42 -0
  194. package/dist/catalog/scope.js +42 -0
  195. package/dist/catalog/unshare.d.ts +22 -0
  196. package/dist/catalog/unshare.js +119 -0
  197. package/dist/channels/actions.d.ts +6 -4
  198. package/dist/channels/actions.js +11 -4
  199. package/dist/channels/cards.d.ts +33 -11
  200. package/dist/channels/cards.js +96 -24
  201. package/dist/channels/channels.module.d.ts +40 -0
  202. package/dist/channels/channels.module.js +130 -0
  203. package/dist/channels/channels.schemas.d.ts +37 -0
  204. package/dist/channels/channels.schemas.js +38 -0
  205. package/dist/channels/connections.controller.d.ts +44 -37
  206. package/dist/channels/connections.controller.js +83 -38
  207. package/dist/channels/connections.service.d.ts +101 -30
  208. package/dist/channels/connections.service.js +380 -147
  209. package/dist/channels/inbound.d.ts +44 -38
  210. package/dist/channels/inbound.js +190 -44
  211. package/dist/channels/job-ids.d.ts +10 -0
  212. package/dist/channels/job-ids.js +10 -0
  213. package/dist/channels/jobs.d.ts +85 -0
  214. package/dist/channels/jobs.js +157 -0
  215. package/dist/channels/outbound.d.ts +71 -80
  216. package/dist/channels/outbound.js +219 -202
  217. package/dist/channels/phrases.d.ts +33 -2
  218. package/dist/channels/phrases.js +29 -1
  219. package/dist/channels/supervisor.d.ts +88 -46
  220. package/dist/channels/supervisor.js +230 -132
  221. package/dist/channels/threads.d.ts +34 -8
  222. package/dist/channels/threads.js +79 -13
  223. package/dist/channels/webhook.d.ts +20 -14
  224. package/dist/channels/webhook.js +51 -20
  225. package/dist/config/docs.js +5 -1
  226. package/dist/config/load.d.ts +3 -2
  227. package/dist/config/load.js +3 -2
  228. package/dist/config/nacos-source.js +11 -2
  229. package/dist/config/schema.d.ts +36 -2
  230. package/dist/config/schema.js +226 -25
  231. package/dist/conversations/access.d.ts +31 -0
  232. package/dist/conversations/access.js +110 -0
  233. package/dist/conversations/agent-tree.d.ts +46 -0
  234. package/dist/conversations/agent-tree.js +92 -0
  235. package/dist/conversations/artifacts.d.ts +11 -11
  236. package/dist/conversations/artifacts.js +36 -10
  237. package/dist/conversations/attachments.controller.d.ts +1 -1
  238. package/dist/conversations/attachments.controller.js +8 -6
  239. package/dist/conversations/attachments.module.d.ts +7 -0
  240. package/dist/conversations/attachments.module.js +25 -0
  241. package/dist/conversations/attachments.service.d.ts +60 -22
  242. package/dist/conversations/attachments.service.js +249 -51
  243. package/dist/conversations/conversations.controller.d.ts +86 -50
  244. package/dist/conversations/conversations.controller.js +184 -103
  245. package/dist/conversations/conversations.module.d.ts +8 -0
  246. package/dist/conversations/conversations.module.js +72 -0
  247. package/dist/conversations/conversations.schemas.d.ts +52 -0
  248. package/dist/conversations/conversations.schemas.js +79 -0
  249. package/dist/conversations/conversations.service.d.ts +166 -49
  250. package/dist/conversations/conversations.service.js +383 -179
  251. package/dist/conversations/environment-status.d.ts +24 -0
  252. package/dist/conversations/environment-status.js +71 -0
  253. package/dist/conversations/event-log.d.ts +64 -27
  254. package/dist/conversations/event-log.js +167 -31
  255. package/dist/conversations/events.d.ts +252 -9
  256. package/dist/conversations/events.js +243 -32
  257. package/dist/conversations/files.d.ts +10 -10
  258. package/dist/conversations/files.js +37 -11
  259. package/dist/conversations/idem-keys.d.ts +5 -0
  260. package/dist/conversations/idem-keys.js +5 -0
  261. package/dist/conversations/job-ids.d.ts +6 -0
  262. package/dist/conversations/job-ids.js +6 -0
  263. package/dist/conversations/message-context.d.ts +79 -0
  264. package/dist/conversations/message-context.js +145 -0
  265. package/dist/conversations/outputs-read.d.ts +11 -11
  266. package/dist/conversations/outputs-read.js +31 -7
  267. package/dist/conversations/queue.d.ts +53 -58
  268. package/dist/conversations/queue.js +37 -293
  269. package/dist/conversations/queue.service.d.ts +60 -0
  270. package/dist/conversations/queue.service.js +350 -0
  271. package/dist/conversations/titles.d.ts +83 -27
  272. package/dist/conversations/titles.js +195 -71
  273. package/dist/conversations/tree.d.ts +17 -0
  274. package/dist/conversations/tree.js +42 -0
  275. package/dist/ctx/bus.js +9 -3
  276. package/dist/ctx/create-ctx.d.ts +26 -1
  277. package/dist/ctx/create-ctx.js +45 -16
  278. package/dist/ctx/lock.d.ts +7 -3
  279. package/dist/ctx/lock.js +9 -20
  280. package/dist/ctx/secrets.d.ts +10 -2
  281. package/dist/ctx/secrets.js +7 -3
  282. package/dist/db/kernel-schema.d.ts +589 -27
  283. package/dist/db/pool.d.ts +10 -0
  284. package/dist/db/pool.js +4 -0
  285. package/dist/devices/device-auth.controller.d.ts +42 -0
  286. package/dist/devices/device-auth.controller.js +116 -0
  287. package/dist/devices/device-auth.d.ts +119 -0
  288. package/dist/devices/device-auth.js +403 -0
  289. package/dist/devices/device-auth.module.d.ts +7 -0
  290. package/dist/devices/device-auth.module.js +25 -0
  291. package/dist/devices/device-gateway.d.ts +128 -0
  292. package/dist/devices/device-gateway.js +530 -0
  293. package/dist/devices/device-provider.d.ts +89 -0
  294. package/dist/devices/device-provider.js +151 -0
  295. package/dist/devices/device-routes.d.ts +36 -0
  296. package/dist/devices/device-routes.js +90 -0
  297. package/dist/devices/devices.module.d.ts +16 -0
  298. package/dist/devices/devices.module.js +44 -0
  299. package/dist/devices/dto.d.ts +66 -0
  300. package/dist/devices/dto.js +44 -0
  301. package/dist/devices/keys.d.ts +25 -0
  302. package/dist/devices/keys.js +25 -0
  303. package/dist/devices/machines.d.ts +118 -0
  304. package/dist/devices/machines.js +366 -0
  305. package/dist/devices/relay.d.ts +100 -0
  306. package/dist/devices/relay.js +373 -0
  307. package/dist/devices/targets.d.ts +28 -0
  308. package/dist/devices/targets.js +73 -0
  309. package/dist/environments/access.d.ts +66 -0
  310. package/dist/environments/access.js +113 -0
  311. package/dist/environments/conversation-environments.d.ts +75 -0
  312. package/dist/environments/conversation-environments.js +231 -0
  313. package/dist/environments/dto.d.ts +25 -0
  314. package/dist/environments/dto.js +12 -0
  315. package/dist/environments/environments.controller.d.ts +36 -0
  316. package/dist/environments/environments.controller.js +124 -0
  317. package/dist/environments/environments.module.d.ts +8 -0
  318. package/dist/environments/environments.module.js +31 -0
  319. package/dist/environments/environments.schemas.d.ts +3 -0
  320. package/dist/environments/environments.schemas.js +14 -0
  321. package/dist/environments/environments.service.d.ts +251 -0
  322. package/dist/environments/environments.service.js +791 -0
  323. package/dist/environments/label.d.ts +11 -0
  324. package/dist/environments/label.js +25 -0
  325. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  326. package/dist/environments/legacy-cleanup.job.js +141 -0
  327. package/dist/errors.d.ts +160 -2
  328. package/dist/errors.js +160 -2
  329. package/dist/evals/budget.d.ts +42 -21
  330. package/dist/evals/budget.js +114 -62
  331. package/dist/evals/evals.module.d.ts +31 -0
  332. package/dist/evals/evals.module.js +114 -0
  333. package/dist/evals/evals.schemas.d.ts +110 -0
  334. package/dist/evals/evals.schemas.js +107 -0
  335. package/dist/evals/jobs.d.ts +20 -0
  336. package/dist/evals/jobs.js +45 -0
  337. package/dist/evals/reconstruct.d.ts +18 -9
  338. package/dist/evals/reconstruct.js +36 -10
  339. package/dist/evals/recorded-tools.d.ts +37 -1
  340. package/dist/evals/recorded-tools.js +120 -10
  341. package/dist/evals/run-replay.d.ts +75 -10
  342. package/dist/evals/run-replay.js +218 -94
  343. package/dist/evals/runs.controller.d.ts +3 -58
  344. package/dist/evals/runs.controller.js +18 -50
  345. package/dist/evals/runs.service.d.ts +31 -52
  346. package/dist/evals/runs.service.js +281 -255
  347. package/dist/evals/sets.controller.d.ts +3 -29
  348. package/dist/evals/sets.controller.js +18 -39
  349. package/dist/evals/sets.service.d.ts +29 -13
  350. package/dist/evals/sets.service.js +262 -202
  351. package/dist/evals/snapshot.d.ts +5 -4
  352. package/dist/evals/snapshot.js +17 -4
  353. package/dist/evals/step-replay.d.ts +6 -8
  354. package/dist/evals/step-replay.js +17 -10
  355. package/dist/evals/trajectory.controller.d.ts +1 -1
  356. package/dist/evals/trajectory.controller.js +11 -7
  357. package/dist/evals/trajectory.d.ts +2 -2
  358. package/dist/evals/trajectory.js +1 -1
  359. package/dist/evals/trajectory.service.d.ts +13 -7
  360. package/dist/evals/trajectory.service.js +56 -21
  361. package/dist/evals/worker.d.ts +48 -31
  362. package/dist/evals/worker.js +229 -124
  363. package/dist/extensions/admin-ops.d.ts +133 -41
  364. package/dist/extensions/admin-ops.js +378 -172
  365. package/dist/extensions/admin-view.d.ts +82 -32
  366. package/dist/extensions/admin-view.js +284 -71
  367. package/dist/extensions/approvals.d.ts +24 -10
  368. package/dist/extensions/approvals.js +73 -46
  369. package/dist/extensions/blobs.d.ts +27 -10
  370. package/dist/extensions/blobs.js +112 -45
  371. package/dist/extensions/bootstrap.d.ts +99 -36
  372. package/dist/extensions/bootstrap.js +290 -134
  373. package/dist/extensions/cli.d.ts +32 -10
  374. package/dist/extensions/cli.js +52 -98
  375. package/dist/extensions/config-hash.d.ts +10 -0
  376. package/dist/extensions/config-hash.js +38 -0
  377. package/dist/extensions/config-issues.d.ts +19 -0
  378. package/dist/extensions/config-issues.js +48 -0
  379. package/dist/extensions/config-json-schema.d.ts +43 -7
  380. package/dist/extensions/config-json-schema.js +124 -58
  381. package/dist/extensions/deployment-config-store.d.ts +55 -0
  382. package/dist/extensions/deployment-config-store.js +133 -0
  383. package/dist/extensions/deployment-config.d.ts +146 -70
  384. package/dist/extensions/deployment-config.js +439 -246
  385. package/dist/extensions/display-name.d.ts +22 -0
  386. package/dist/extensions/display-name.js +77 -0
  387. package/dist/extensions/effective-config.d.ts +127 -0
  388. package/dist/extensions/effective-config.js +368 -0
  389. package/dist/extensions/enabled.d.ts +5 -5
  390. package/dist/extensions/extensions.module.d.ts +8 -0
  391. package/dist/extensions/extensions.module.js +96 -0
  392. package/dist/extensions/hooks.d.ts +40 -6
  393. package/dist/extensions/hooks.js +83 -17
  394. package/dist/extensions/host.d.ts +161 -80
  395. package/dist/extensions/host.js +505 -213
  396. package/dist/extensions/installs.d.ts +73 -19
  397. package/dist/extensions/installs.js +174 -37
  398. package/dist/extensions/job-ids.d.ts +6 -0
  399. package/dist/extensions/job-ids.js +6 -0
  400. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  401. package/dist/extensions/lifecycle-topics.js +18 -0
  402. package/dist/extensions/lifecycle.d.ts +35 -47
  403. package/dist/extensions/lifecycle.js +103 -39
  404. package/dist/extensions/locks.d.ts +45 -0
  405. package/dist/extensions/locks.js +112 -0
  406. package/dist/extensions/migrate-lock.d.ts +3 -4
  407. package/dist/extensions/org-config.d.ts +141 -49
  408. package/dist/extensions/org-config.js +471 -243
  409. package/dist/extensions/org-levels.d.ts +37 -0
  410. package/dist/extensions/org-levels.js +71 -0
  411. package/dist/extensions/org-overrides.d.ts +151 -0
  412. package/dist/extensions/org-overrides.js +524 -0
  413. package/dist/extensions/package.d.ts +14 -1
  414. package/dist/extensions/package.js +51 -2
  415. package/dist/extensions/permission-view.d.ts +59 -6
  416. package/dist/extensions/permission-view.js +7 -5
  417. package/dist/extensions/plugin-guides.d.ts +129 -0
  418. package/dist/extensions/plugin-guides.js +283 -0
  419. package/dist/extensions/plugin-icons.d.ts +54 -0
  420. package/dist/extensions/plugin-icons.js +125 -0
  421. package/dist/extensions/plugin-items.d.ts +21 -0
  422. package/dist/extensions/plugin-items.js +42 -0
  423. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  424. package/dist/extensions/point-defaults.controller.js +69 -0
  425. package/dist/extensions/point-defaults.d.ts +73 -0
  426. package/dist/extensions/point-defaults.js +236 -0
  427. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  428. package/dist/extensions/point-defaults.schemas.js +14 -0
  429. package/dist/extensions/registry.d.ts +50 -2
  430. package/dist/extensions/registry.js +91 -4
  431. package/dist/extensions/resolve.d.ts +51 -1
  432. package/dist/extensions/resolve.js +85 -3
  433. package/dist/extensions/single-provider.d.ts +92 -0
  434. package/dist/extensions/single-provider.js +180 -0
  435. package/dist/extensions/sources.d.ts +19 -10
  436. package/dist/extensions/sources.js +34 -13
  437. package/dist/extensions/state.module.d.ts +9 -0
  438. package/dist/extensions/state.module.js +38 -0
  439. package/dist/extensions/unavailable.d.ts +50 -0
  440. package/dist/extensions/unavailable.js +115 -0
  441. package/dist/files/files.module.d.ts +3 -0
  442. package/dist/files/files.module.js +22 -0
  443. package/dist/files/previewers.controller.d.ts +7 -2
  444. package/dist/files/previewers.controller.js +19 -12
  445. package/dist/files/previewers.d.ts +21 -19
  446. package/dist/files/previewers.js +114 -38
  447. package/dist/files/previewers.schemas.d.ts +10 -0
  448. package/dist/files/previewers.schemas.js +9 -0
  449. package/dist/http/adapter.d.ts +3 -0
  450. package/dist/http/adapter.js +25 -0
  451. package/dist/http/api.module.d.ts +3 -110
  452. package/dist/http/api.module.js +93 -358
  453. package/dist/http/app.d.ts +22 -17
  454. package/dist/http/app.js +46 -65
  455. package/dist/http/error-filter.module.d.ts +5 -0
  456. package/dist/http/error-filter.module.js +18 -0
  457. package/dist/http/error.filter.js +2 -2
  458. package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
  459. package/dist/http/gateway-routes.js +16 -0
  460. package/dist/http/nest-logger.d.ts +6 -5
  461. package/dist/http/nest-logger.js +24 -10
  462. package/dist/http/plugin-dispatch.d.ts +4 -1
  463. package/dist/http/plugin-dispatch.js +14 -2
  464. package/dist/identity/accounts.d.ts +137 -38
  465. package/dist/identity/accounts.js +386 -186
  466. package/dist/identity/api-tokens.d.ts +11 -7
  467. package/dist/identity/api-tokens.js +71 -44
  468. package/dist/identity/audit.d.ts +9 -5
  469. package/dist/identity/audit.js +5 -1
  470. package/dist/identity/auth.controller.d.ts +11 -10
  471. package/dist/identity/auth.controller.js +40 -30
  472. package/dist/identity/auth.guard.d.ts +16 -8
  473. package/dist/identity/auth.guard.js +41 -13
  474. package/dist/identity/binding.d.ts +9 -11
  475. package/dist/identity/binding.js +41 -13
  476. package/dist/identity/cookies.d.ts +26 -5
  477. package/dist/identity/cookies.js +58 -6
  478. package/dist/identity/external-identity-lock.d.ts +17 -0
  479. package/dist/identity/external-identity-lock.js +39 -0
  480. package/dist/identity/external.d.ts +19 -15
  481. package/dist/identity/external.js +163 -125
  482. package/dist/identity/identity.module.d.ts +6 -0
  483. package/dist/identity/identity.module.js +59 -0
  484. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  485. package/dist/identity/initial-passwords.controller.js +49 -0
  486. package/dist/identity/initial-passwords.d.ts +61 -0
  487. package/dist/identity/initial-passwords.job.d.ts +16 -0
  488. package/dist/identity/initial-passwords.job.js +46 -0
  489. package/dist/identity/initial-passwords.js +159 -0
  490. package/dist/identity/me.controller.d.ts +32 -15
  491. package/dist/identity/me.controller.js +80 -33
  492. package/dist/identity/me.schemas.d.ts +24 -0
  493. package/dist/identity/me.schemas.js +25 -0
  494. package/dist/identity/principal.d.ts +11 -3
  495. package/dist/identity/principal.js +11 -3
  496. package/dist/identity/sessions.d.ts +24 -10
  497. package/dist/identity/sessions.js +119 -42
  498. package/dist/identity/settings.d.ts +69 -23
  499. package/dist/identity/settings.js +201 -72
  500. package/dist/identity/sso.controller.d.ts +7 -7
  501. package/dist/identity/sso.controller.js +13 -9
  502. package/dist/identity/sso.d.ts +9 -12
  503. package/dist/identity/sso.js +54 -24
  504. package/dist/identity/super-admin.d.ts +20 -0
  505. package/dist/identity/super-admin.js +81 -0
  506. package/dist/inbox/inbox.module.d.ts +6 -0
  507. package/dist/inbox/inbox.module.js +26 -0
  508. package/dist/inbox/inbox.schemas.d.ts +8 -0
  509. package/dist/inbox/inbox.schemas.js +11 -0
  510. package/dist/inbox/inbox.service.d.ts +68 -11
  511. package/dist/inbox/inbox.service.js +104 -13
  512. package/dist/inbox/org-notices.d.ts +63 -0
  513. package/dist/inbox/org-notices.js +91 -0
  514. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  515. package/dist/inbox/platform-inbox.controller.js +58 -0
  516. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  517. package/dist/inbox/platform-inbox.service.js +263 -0
  518. package/dist/inbox/platform-notices.d.ts +19 -0
  519. package/dist/inbox/platform-notices.js +9 -0
  520. package/dist/index.d.ts +22 -13
  521. package/dist/index.js +16 -7
  522. package/dist/infra/cache/cache.module.d.ts +3 -0
  523. package/dist/infra/cache/cache.module.js +16 -0
  524. package/dist/infra/cache/cache.service.d.ts +21 -0
  525. package/dist/infra/cache/cache.service.js +80 -0
  526. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  527. package/dist/infra/cache/cacheable.decorator.js +83 -0
  528. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  529. package/dist/infra/cli/kernel-cli.module.js +173 -0
  530. package/dist/infra/close-within.d.ts +15 -0
  531. package/dist/infra/close-within.js +36 -0
  532. package/dist/infra/config/config.module.d.ts +13 -0
  533. package/dist/infra/config/config.module.js +39 -0
  534. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  535. package/dist/infra/config/kernel-config.service.js +157 -0
  536. package/dist/infra/database/after-commit.d.ts +6 -0
  537. package/dist/infra/database/after-commit.js +9 -0
  538. package/dist/infra/database/database.module.d.ts +25 -0
  539. package/dist/infra/database/database.module.js +91 -0
  540. package/dist/infra/database/kernel-db.d.ts +22 -0
  541. package/dist/infra/database/kernel-db.js +65 -0
  542. package/dist/infra/database/transaction-host.d.ts +50 -0
  543. package/dist/infra/database/transaction-host.js +125 -0
  544. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  545. package/dist/infra/database/transactional.decorator.js +27 -0
  546. package/dist/infra/database/xact-lock.d.ts +17 -0
  547. package/dist/infra/database/xact-lock.js +43 -0
  548. package/dist/infra/events/kernel-events.d.ts +121 -0
  549. package/dist/infra/events/kernel-events.js +65 -0
  550. package/dist/infra/health/health.controller.d.ts +26 -0
  551. package/dist/infra/health/health.controller.js +104 -0
  552. package/dist/infra/health/health.module.d.ts +9 -0
  553. package/dist/infra/health/health.module.js +24 -0
  554. package/dist/infra/health/health.options.d.ts +10 -0
  555. package/dist/infra/health/health.options.js +15 -0
  556. package/dist/infra/health/shutdown-state.d.ts +6 -0
  557. package/dist/infra/health/shutdown-state.js +2 -0
  558. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  559. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  560. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  561. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  562. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  563. package/dist/infra/lifecycle/process-guards.js +90 -0
  564. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  565. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  566. package/dist/infra/lock/key-template.d.ts +13 -0
  567. package/dist/infra/lock/key-template.js +46 -0
  568. package/dist/infra/lock/lock.module.d.ts +3 -0
  569. package/dist/infra/lock/lock.module.js +16 -0
  570. package/dist/infra/lock/lock.service.d.ts +120 -0
  571. package/dist/infra/lock/lock.service.js +343 -0
  572. package/dist/infra/lock/shared-lease.d.ts +44 -0
  573. package/dist/infra/lock/shared-lease.js +121 -0
  574. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  575. package/dist/infra/lock/with-lock.decorator.js +49 -0
  576. package/dist/infra/logging/logging.module.d.ts +18 -0
  577. package/dist/infra/logging/logging.module.js +52 -0
  578. package/dist/infra/queue/add-job-once.d.ts +14 -0
  579. package/dist/infra/queue/add-job-once.js +16 -0
  580. package/dist/infra/queue/configured-processor.d.ts +18 -0
  581. package/dist/infra/queue/configured-processor.js +23 -0
  582. package/dist/infra/queue/job-failure.d.ts +18 -0
  583. package/dist/infra/queue/job-failure.js +26 -0
  584. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  585. package/dist/infra/queue/queue-shutdown.js +81 -0
  586. package/dist/infra/queue/queue.module.d.ts +16 -0
  587. package/dist/infra/queue/queue.module.js +61 -0
  588. package/dist/infra/queue/redis-connection.d.ts +13 -0
  589. package/dist/infra/queue/redis-connection.js +25 -0
  590. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  591. package/dist/infra/queue/retired-schedulers.js +9 -0
  592. package/dist/infra/queue/run-job.d.ts +16 -0
  593. package/dist/infra/queue/run-job.js +19 -0
  594. package/dist/infra/redis/redis.module.d.ts +24 -0
  595. package/dist/infra/redis/redis.module.js +91 -0
  596. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  597. package/dist/infra/schedule/cron-tick.js +25 -0
  598. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  599. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  600. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  601. package/dist/infra/schedule/locked-interval.js +190 -0
  602. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  603. package/dist/infra/schedule/locked-tick.js +137 -0
  604. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  605. package/dist/infra/schedule/schedule.module.js +27 -0
  606. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  607. package/dist/infra/schedule/scheduled-runs.js +163 -0
  608. package/dist/infra/swagger/swagger.d.ts +16 -0
  609. package/dist/infra/swagger/swagger.js +31 -0
  610. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  611. package/dist/infra/throttler/credential-throttler.js +77 -0
  612. package/dist/infra/throttler/named-throttlers.d.ts +36 -0
  613. package/dist/infra/throttler/named-throttlers.js +157 -0
  614. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  615. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  616. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  617. package/dist/infra/throttler/throttler.guard.js +68 -0
  618. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  619. package/dist/infra/throttler/throttler.module.js +53 -0
  620. package/dist/infra/tokens.d.ts +20 -0
  621. package/dist/infra/tokens.js +20 -0
  622. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  623. package/dist/infra/validation/create-zod-dto.js +35 -0
  624. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  625. package/dist/infra/validation/parse-with-zod.js +12 -0
  626. package/dist/infra/validation/validation.module.d.ts +3 -0
  627. package/dist/infra/validation/validation.module.js +16 -0
  628. package/dist/infra/validation/zod-params.d.ts +7 -0
  629. package/dist/infra/validation/zod-params.js +42 -0
  630. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  631. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  632. package/dist/kernel.d.ts +9 -244
  633. package/dist/kernel.js +8 -1305
  634. package/dist/kernel.module.d.ts +17 -0
  635. package/dist/kernel.module.js +145 -0
  636. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  637. package/dist/lifecycle/kernel-lifecycle.js +465 -0
  638. package/dist/lifecycle/tokens.d.ts +3 -0
  639. package/dist/lifecycle/tokens.js +3 -0
  640. package/dist/log-context.d.ts +2 -0
  641. package/dist/log-context.js +4 -0
  642. package/dist/log.d.ts +13 -1
  643. package/dist/log.js +93 -17
  644. package/dist/models/embeddings.d.ts +82 -0
  645. package/dist/models/embeddings.js +326 -0
  646. package/dist/models/enablement.controller.d.ts +40 -0
  647. package/dist/models/enablement.controller.js +74 -0
  648. package/dist/models/enablement.d.ts +101 -0
  649. package/dist/models/enablement.js +264 -0
  650. package/dist/models/models.module.d.ts +7 -0
  651. package/dist/models/models.module.js +36 -0
  652. package/dist/models/org-models.schemas.d.ts +8 -0
  653. package/dist/models/org-models.schemas.js +22 -0
  654. package/dist/models/prices.d.ts +13 -5
  655. package/dist/models/prices.js +69 -39
  656. package/dist/models/purposes.controller.d.ts +6 -4
  657. package/dist/models/purposes.controller.js +16 -11
  658. package/dist/models/purposes.d.ts +103 -23
  659. package/dist/models/purposes.js +208 -77
  660. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  661. package/dist/orgs/directory-sync.controller.js +2 -2
  662. package/dist/orgs/directory-sync.d.ts +74 -35
  663. package/dist/orgs/directory-sync.js +243 -132
  664. package/dist/orgs/invitations.controller.d.ts +8 -8
  665. package/dist/orgs/invitations.controller.js +27 -26
  666. package/dist/orgs/invitations.service.d.ts +12 -9
  667. package/dist/orgs/invitations.service.js +130 -92
  668. package/dist/orgs/job-ids.d.ts +8 -0
  669. package/dist/orgs/job-ids.js +8 -0
  670. package/dist/orgs/members.service.d.ts +19 -12
  671. package/dist/orgs/members.service.js +161 -117
  672. package/dist/orgs/offboarding.d.ts +61 -60
  673. package/dist/orgs/offboarding.js +206 -95
  674. package/dist/orgs/org-lock.d.ts +33 -19
  675. package/dist/orgs/org-lock.js +94 -35
  676. package/dist/orgs/org.guard.d.ts +11 -1
  677. package/dist/orgs/org.guard.js +45 -34
  678. package/dist/orgs/orgs.controller.d.ts +13 -16
  679. package/dist/orgs/orgs.controller.js +29 -20
  680. package/dist/orgs/orgs.module.d.ts +6 -0
  681. package/dist/orgs/orgs.module.js +71 -0
  682. package/dist/orgs/orgs.schemas.d.ts +8 -0
  683. package/dist/orgs/orgs.schemas.js +16 -0
  684. package/dist/orgs/orgs.service.d.ts +47 -21
  685. package/dist/orgs/orgs.service.js +166 -91
  686. package/dist/orgs/roles.d.ts +1 -1
  687. package/dist/orgs/roles.js +5 -1
  688. package/dist/orgs/settings.controller.d.ts +2 -2
  689. package/dist/orgs/settings.controller.js +8 -6
  690. package/dist/orgs/settings.service.d.ts +76 -14
  691. package/dist/orgs/settings.service.js +140 -51
  692. package/dist/overrides.d.ts +63 -0
  693. package/dist/overrides.js +34 -0
  694. package/dist/platform/actor.d.ts +48 -0
  695. package/dist/platform/actor.js +100 -0
  696. package/dist/platform/agent-docs.d.ts +18 -0
  697. package/dist/platform/agent-docs.js +59 -0
  698. package/dist/platform/availability.d.ts +14 -0
  699. package/dist/platform/availability.js +43 -0
  700. package/dist/platform/errors.d.ts +28 -0
  701. package/dist/platform/errors.js +65 -0
  702. package/dist/platform/exclusions.d.ts +11 -0
  703. package/dist/platform/exclusions.js +683 -0
  704. package/dist/platform/method.d.ts +6 -0
  705. package/dist/platform/method.js +15 -0
  706. package/dist/platform/operation.d.ts +169 -0
  707. package/dist/platform/operation.js +94 -0
  708. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  709. package/dist/platform/ops/accounts.ops.js +291 -0
  710. package/dist/platform/ops/admin.ops.d.ts +38 -0
  711. package/dist/platform/ops/admin.ops.js +407 -0
  712. package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
  713. package/dist/platform/ops/agent-skills.ops.js +226 -0
  714. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  715. package/dist/platform/ops/agent-templates.ops.js +272 -0
  716. package/dist/platform/ops/agents.ops.d.ts +37 -0
  717. package/dist/platform/ops/agents.ops.js +717 -0
  718. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  719. package/dist/platform/ops/approvals.ops.js +116 -0
  720. package/dist/platform/ops/background.ops.d.ts +14 -0
  721. package/dist/platform/ops/background.ops.js +134 -0
  722. package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
  723. package/dist/platform/ops/catalog-admin.ops.js +599 -0
  724. package/dist/platform/ops/channels.ops.d.ts +16 -0
  725. package/dist/platform/ops/channels.ops.js +195 -0
  726. package/dist/platform/ops/components.ops.d.ts +46 -0
  727. package/dist/platform/ops/components.ops.js +854 -0
  728. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  729. package/dist/platform/ops/connectors.ops.js +188 -0
  730. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  731. package/dist/platform/ops/conversations.ops.js +470 -0
  732. package/dist/platform/ops/environments.ops.d.ts +26 -0
  733. package/dist/platform/ops/environments.ops.js +311 -0
  734. package/dist/platform/ops/errors.d.ts +16 -0
  735. package/dist/platform/ops/errors.js +30 -0
  736. package/dist/platform/ops/evals.ops.d.ts +28 -0
  737. package/dist/platform/ops/evals.ops.js +783 -0
  738. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  739. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  740. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  741. package/dist/platform/ops/extensions.ops.js +347 -0
  742. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  743. package/dist/platform/ops/inbox.ops.js +378 -0
  744. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  745. package/dist/platform/ops/marketplaces.ops.js +466 -0
  746. package/dist/platform/ops/models.ops.d.ts +25 -0
  747. package/dist/platform/ops/models.ops.js +232 -0
  748. package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
  749. package/dist/platform/ops/org-plugins.ops.js +329 -0
  750. package/dist/platform/ops/org-settings.ops.d.ts +18 -0
  751. package/dist/platform/ops/org-settings.ops.js +127 -0
  752. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  753. package/dist/platform/ops/orgs.ops.js +296 -0
  754. package/dist/platform/ops/other-orgs.d.ts +20 -0
  755. package/dist/platform/ops/other-orgs.js +72 -0
  756. package/dist/platform/ops/paging.d.ts +14 -0
  757. package/dist/platform/ops/paging.js +20 -0
  758. package/dist/platform/ops/platform.ops.d.ts +30 -0
  759. package/dist/platform/ops/platform.ops.js +231 -0
  760. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  761. package/dist/platform/ops/plugins.ops.js +476 -0
  762. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  763. package/dist/platform/ops/previewers.ops.js +109 -0
  764. package/dist/platform/ops/requests.ops.d.ts +14 -0
  765. package/dist/platform/ops/requests.ops.js +191 -0
  766. package/dist/platform/ops/role.d.ts +4 -0
  767. package/dist/platform/ops/role.js +10 -0
  768. package/dist/platform/ops/skills.ops.d.ts +17 -0
  769. package/dist/platform/ops/skills.ops.js +216 -0
  770. package/dist/platform/ops/summary.d.ts +10 -0
  771. package/dist/platform/ops/summary.js +18 -0
  772. package/dist/platform/ops/themes.ops.d.ts +14 -0
  773. package/dist/platform/ops/themes.ops.js +47 -0
  774. package/dist/platform/ops/unavailable.d.ts +23 -0
  775. package/dist/platform/ops/unavailable.js +118 -0
  776. package/dist/platform/parity.d.ts +33 -0
  777. package/dist/platform/parity.js +272 -0
  778. package/dist/platform/platform-ops.module.d.ts +40 -0
  779. package/dist/platform/platform-ops.module.js +127 -0
  780. package/dist/platform/platform.module.d.ts +8 -0
  781. package/dist/platform/platform.module.js +25 -0
  782. package/dist/platform/registry.d.ts +30 -0
  783. package/dist/platform/registry.js +111 -0
  784. package/dist/platform/route-schemas.d.ts +18 -0
  785. package/dist/platform/route-schemas.js +66 -0
  786. package/dist/roles/gateway-role.d.ts +54 -0
  787. package/dist/roles/gateway-role.js +118 -0
  788. package/dist/roles/gateway.module.d.ts +9 -0
  789. package/dist/roles/gateway.module.js +31 -0
  790. package/dist/roles/worker-role.d.ts +65 -0
  791. package/dist/roles/worker-role.js +151 -0
  792. package/dist/roles/worker.module.d.ts +14 -0
  793. package/dist/roles/worker.module.js +106 -0
  794. package/dist/runtime/abort.js +19 -2
  795. package/dist/runtime/checkpointer.d.ts +8 -3
  796. package/dist/runtime/checkpointer.js +87 -55
  797. package/dist/runtime/context/build.d.ts +21 -13
  798. package/dist/runtime/context/build.js +106 -29
  799. package/dist/runtime/context/claude-tools.d.ts +4 -1
  800. package/dist/runtime/context/claude-tools.js +13 -12
  801. package/dist/runtime/context/compaction.js +24 -1
  802. package/dist/runtime/context/environment-paths.d.ts +40 -0
  803. package/dist/runtime/context/environment-paths.js +48 -0
  804. package/dist/runtime/context/legacy-text.d.ts +22 -0
  805. package/dist/runtime/context/legacy-text.js +37 -0
  806. package/dist/runtime/context/reminders.d.ts +2 -0
  807. package/dist/runtime/context/reminders.js +2 -0
  808. package/dist/runtime/context/run-context.d.ts +65 -0
  809. package/dist/runtime/context/run-context.js +215 -0
  810. package/dist/runtime/context/skills.d.ts +29 -11
  811. package/dist/runtime/context/skills.js +46 -32
  812. package/dist/runtime/context/tool-changes.d.ts +27 -0
  813. package/dist/runtime/context/tool-changes.js +60 -0
  814. package/dist/runtime/conversation-lock.d.ts +20 -11
  815. package/dist/runtime/conversation-lock.js +62 -72
  816. package/dist/runtime/hook-calls.d.ts +11 -4
  817. package/dist/runtime/hook-calls.js +41 -13
  818. package/dist/runtime/job-ids.d.ts +10 -0
  819. package/dist/runtime/job-ids.js +10 -0
  820. package/dist/runtime/langgraph-loop.d.ts +3 -1
  821. package/dist/runtime/langgraph-loop.js +37 -18
  822. package/dist/runtime/loop.d.ts +42 -6
  823. package/dist/runtime/loop.js +14 -0
  824. package/dist/runtime/maintenance-queue.d.ts +10 -0
  825. package/dist/runtime/maintenance-queue.js +10 -0
  826. package/dist/runtime/maintenance.d.ts +50 -74
  827. package/dist/runtime/maintenance.js +166 -137
  828. package/dist/runtime/model-call.d.ts +61 -15
  829. package/dist/runtime/model-call.js +128 -84
  830. package/dist/runtime/providers.d.ts +158 -27
  831. package/dist/runtime/providers.js +373 -63
  832. package/dist/runtime/quota.d.ts +17 -3
  833. package/dist/runtime/quota.js +27 -2
  834. package/dist/runtime/retired-schedulers.d.ts +7 -0
  835. package/dist/runtime/retired-schedulers.js +31 -0
  836. package/dist/runtime/run-context.service.d.ts +65 -0
  837. package/dist/runtime/run-context.service.js +236 -0
  838. package/dist/runtime/run-control.d.ts +43 -0
  839. package/dist/runtime/run-control.js +89 -0
  840. package/dist/runtime/run-drafts.d.ts +85 -0
  841. package/dist/runtime/run-drafts.js +230 -0
  842. package/dist/runtime/run-finish.d.ts +27 -18
  843. package/dist/runtime/run-finish.js +98 -51
  844. package/dist/runtime/run-jobs.d.ts +46 -0
  845. package/dist/runtime/run-jobs.js +91 -0
  846. package/dist/runtime/run-processors.d.ts +60 -0
  847. package/dist/runtime/run-processors.js +185 -0
  848. package/dist/runtime/run-queue.d.ts +90 -58
  849. package/dist/runtime/run-queue.js +566 -297
  850. package/dist/runtime/run-steps.d.ts +39 -0
  851. package/dist/runtime/run-steps.js +96 -0
  852. package/dist/runtime/run-worker.d.ts +134 -77
  853. package/dist/runtime/run-worker.js +412 -237
  854. package/dist/runtime/runtime.module.d.ts +10 -0
  855. package/dist/runtime/runtime.module.js +122 -0
  856. package/dist/runtime/step-log.d.ts +51 -0
  857. package/dist/runtime/step-log.js +111 -0
  858. package/dist/runtime/stream.controller.d.ts +28 -9
  859. package/dist/runtime/stream.controller.js +72 -13
  860. package/dist/runtime/stream.d.ts +27 -6
  861. package/dist/runtime/stream.js +102 -7
  862. package/dist/runtime/subagents/child.d.ts +58 -51
  863. package/dist/runtime/subagents/child.js +105 -86
  864. package/dist/runtime/subagents/definition.d.ts +32 -28
  865. package/dist/runtime/subagents/definition.js +89 -143
  866. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  867. package/dist/runtime/subagents/deliveries.js +228 -0
  868. package/dist/runtime/subagents/dispatch.d.ts +197 -27
  869. package/dist/runtime/subagents/dispatch.js +336 -270
  870. package/dist/runtime/subagents/limits.d.ts +32 -8
  871. package/dist/runtime/subagents/limits.js +44 -8
  872. package/dist/runtime/subagents/messages.d.ts +95 -0
  873. package/dist/runtime/subagents/messages.js +328 -0
  874. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  875. package/dist/runtime/subagents/org-agents.js +3 -2
  876. package/dist/runtime/subagents/preamble.d.ts +4 -4
  877. package/dist/runtime/subagents/preamble.js +9 -7
  878. package/dist/runtime/subagents/progress.d.ts +10 -8
  879. package/dist/runtime/subagents/progress.js +11 -6
  880. package/dist/runtime/subagents/render.d.ts +30 -0
  881. package/dist/runtime/subagents/render.js +53 -0
  882. package/dist/runtime/subagents/roster.d.ts +27 -10
  883. package/dist/runtime/subagents/roster.js +49 -13
  884. package/dist/runtime/subagents/skill-fork.d.ts +10 -10
  885. package/dist/runtime/subagents/skill-fork.js +23 -8
  886. package/dist/runtime/subagents/status.d.ts +14 -0
  887. package/dist/runtime/subagents/status.js +23 -0
  888. package/dist/runtime/subagents/subagents.service.d.ts +43 -0
  889. package/dist/runtime/subagents/subagents.service.js +106 -0
  890. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  891. package/dist/runtime/usage-report-jobs.js +158 -0
  892. package/dist/runtime/usage-report.d.ts +121 -83
  893. package/dist/runtime/usage-report.js +355 -181
  894. package/dist/runtime/waits.d.ts +258 -81
  895. package/dist/runtime/waits.js +800 -263
  896. package/dist/sandbox/job-ids.d.ts +10 -0
  897. package/dist/sandbox/job-ids.js +10 -0
  898. package/dist/sandbox/jobs.d.ts +68 -0
  899. package/dist/sandbox/jobs.js +150 -0
  900. package/dist/sandbox/leases.d.ts +73 -82
  901. package/dist/sandbox/leases.js +162 -346
  902. package/dist/sandbox/providers.d.ts +46 -0
  903. package/dist/sandbox/providers.js +83 -0
  904. package/dist/sandbox/sandbox.module.d.ts +9 -0
  905. package/dist/sandbox/sandbox.module.js +36 -0
  906. package/dist/sandbox/sandbox.service.d.ts +359 -151
  907. package/dist/sandbox/sandbox.service.js +950 -435
  908. package/dist/sandbox/unreachable.d.ts +30 -0
  909. package/dist/sandbox/unreachable.js +108 -0
  910. package/dist/skills/catalog.d.ts +40 -26
  911. package/dist/skills/catalog.js +120 -99
  912. package/dist/skills/changes.controller.d.ts +11 -4
  913. package/dist/skills/changes.controller.js +34 -9
  914. package/dist/skills/changes.service.d.ts +31 -21
  915. package/dist/skills/changes.service.js +426 -368
  916. package/dist/skills/invocable.controller.d.ts +2 -2
  917. package/dist/skills/invocable.controller.js +10 -7
  918. package/dist/skills/invocation-keys.d.ts +1 -1
  919. package/dist/skills/invocation-keys.js +1 -1
  920. package/dist/skills/invoke.d.ts +19 -18
  921. package/dist/skills/invoke.js +68 -24
  922. package/dist/skills/package.d.ts +20 -1
  923. package/dist/skills/package.js +28 -1
  924. package/dist/skills/skills.controller.d.ts +33 -7
  925. package/dist/skills/skills.controller.js +79 -12
  926. package/dist/skills/skills.module.d.ts +6 -0
  927. package/dist/skills/skills.module.js +39 -0
  928. package/dist/skills/skills.schemas.d.ts +48 -0
  929. package/dist/skills/skills.schemas.js +61 -0
  930. package/dist/skills/skills.service.d.ts +151 -44
  931. package/dist/skills/skills.service.js +636 -204
  932. package/dist/skills/usable.d.ts +81 -0
  933. package/dist/skills/usable.js +379 -0
  934. package/dist/storage/job-ids.d.ts +6 -0
  935. package/dist/storage/job-ids.js +6 -0
  936. package/dist/storage/purge.d.ts +22 -7
  937. package/dist/storage/purge.js +55 -3
  938. package/dist/storage/storage.module.d.ts +6 -0
  939. package/dist/storage/storage.module.js +23 -0
  940. package/dist/storage/storage.service.d.ts +18 -4
  941. package/dist/storage/storage.service.js +44 -3
  942. package/dist/themes/render-css.d.ts +12 -0
  943. package/dist/themes/render-css.js +132 -0
  944. package/dist/themes/theme-delivery.service.d.ts +34 -0
  945. package/dist/themes/theme-delivery.service.js +111 -0
  946. package/dist/themes/theme-state.d.ts +95 -0
  947. package/dist/themes/theme-state.js +203 -0
  948. package/dist/themes/theme-usage.d.ts +61 -0
  949. package/dist/themes/theme-usage.js +98 -0
  950. package/dist/themes/themes-public.controller.d.ts +28 -0
  951. package/dist/themes/themes-public.controller.js +92 -0
  952. package/dist/themes/themes.controller.d.ts +13 -0
  953. package/dist/themes/themes.controller.js +38 -0
  954. package/dist/themes/themes.module.d.ts +3 -0
  955. package/dist/themes/themes.module.js +21 -0
  956. package/dist/themes/themes.schemas.d.ts +3 -0
  957. package/dist/themes/themes.schemas.js +2 -0
  958. package/dist/themes/themes.service.d.ts +50 -0
  959. package/dist/themes/themes.service.js +99 -0
  960. package/dist/time-zone.d.ts +5 -0
  961. package/dist/time-zone.js +19 -0
  962. package/dist/tools/approvals.controller.d.ts +1 -1
  963. package/dist/tools/approvals.controller.js +14 -11
  964. package/dist/tools/approvals.schemas.d.ts +21 -0
  965. package/dist/tools/approvals.schemas.js +15 -0
  966. package/dist/tools/approvals.service.d.ts +53 -27
  967. package/dist/tools/approvals.service.js +365 -260
  968. package/dist/tools/breaker.d.ts +2 -2
  969. package/dist/tools/breaker.js +21 -3
  970. package/dist/tools/builtin-names.d.ts +109 -0
  971. package/dist/tools/builtin-names.js +173 -0
  972. package/dist/tools/builtins/agent.d.ts +27 -25
  973. package/dist/tools/builtins/agent.js +66 -63
  974. package/dist/tools/builtins/ask-user.d.ts +3 -3
  975. package/dist/tools/builtins/ask-user.js +3 -3
  976. package/dist/tools/builtins/builtin-tools.d.ts +41 -0
  977. package/dist/tools/builtins/builtin-tools.js +151 -0
  978. package/dist/tools/builtins/current-time.d.ts +26 -0
  979. package/dist/tools/builtins/current-time.js +99 -0
  980. package/dist/tools/builtins/handback.d.ts +28 -0
  981. package/dist/tools/builtins/handback.js +53 -0
  982. package/dist/tools/builtins/platform.d.ts +51 -0
  983. package/dist/tools/builtins/platform.js +451 -0
  984. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  985. package/dist/tools/builtins/read-tool-output.js +3 -3
  986. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  987. package/dist/tools/builtins/sandbox/bash.js +293 -41
  988. package/dist/tools/builtins/sandbox/common.d.ts +137 -37
  989. package/dist/tools/builtins/sandbox/common.js +222 -62
  990. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  991. package/dist/tools/builtins/sandbox/deliver.js +21 -18
  992. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  993. package/dist/tools/builtins/sandbox/edit.js +65 -51
  994. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  995. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  996. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  997. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  998. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  999. package/dist/tools/builtins/sandbox/glob.js +19 -14
  1000. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  1001. package/dist/tools/builtins/sandbox/grep.js +155 -36
  1002. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  1003. package/dist/tools/builtins/sandbox/index.js +13 -5
  1004. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  1005. package/dist/tools/builtins/sandbox/read.js +30 -20
  1006. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  1007. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  1008. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  1009. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  1010. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  1011. package/dist/tools/builtins/sandbox/write.js +52 -45
  1012. package/dist/tools/builtins/send-message.d.ts +56 -0
  1013. package/dist/tools/builtins/send-message.js +100 -0
  1014. package/dist/tools/builtins/skill-load.d.ts +32 -21
  1015. package/dist/tools/builtins/skill-load.js +125 -74
  1016. package/dist/tools/builtins/skill-write.d.ts +4 -4
  1017. package/dist/tools/builtins/skill-write.js +12 -12
  1018. package/dist/tools/builtins/tool-search.d.ts +13 -9
  1019. package/dist/tools/builtins/tool-search.js +25 -14
  1020. package/dist/tools/builtins/web/errors.d.ts +8 -0
  1021. package/dist/tools/builtins/web/errors.js +53 -0
  1022. package/dist/tools/builtins/web/extract.d.ts +62 -0
  1023. package/dist/tools/builtins/web/extract.js +271 -0
  1024. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  1025. package/dist/tools/builtins/web/fetch.js +175 -0
  1026. package/dist/tools/builtins/web/index.d.ts +13 -0
  1027. package/dist/tools/builtins/web/index.js +12 -0
  1028. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  1029. package/dist/tools/builtins/web/page-cache.js +77 -0
  1030. package/dist/tools/builtins/web/search.d.ts +25 -0
  1031. package/dist/tools/builtins/web/search.js +210 -0
  1032. package/dist/tools/builtins/web/url.d.ts +17 -0
  1033. package/dist/tools/builtins/web/url.js +43 -0
  1034. package/dist/tools/canonical-json.d.ts +6 -0
  1035. package/dist/tools/canonical-json.js +16 -0
  1036. package/dist/tools/connector-content.controller.d.ts +1 -1
  1037. package/dist/tools/connector-content.controller.js +11 -6
  1038. package/dist/tools/connector-content.d.ts +12 -15
  1039. package/dist/tools/connector-content.js +53 -18
  1040. package/dist/tools/connectors.controller.d.ts +16 -3
  1041. package/dist/tools/connectors.controller.js +34 -14
  1042. package/dist/tools/connectors.schemas.d.ts +12 -0
  1043. package/dist/tools/connectors.schemas.js +19 -0
  1044. package/dist/tools/connectors.service.d.ts +80 -18
  1045. package/dist/tools/connectors.service.js +529 -358
  1046. package/dist/tools/credentials.d.ts +20 -20
  1047. package/dist/tools/credentials.js +55 -34
  1048. package/dist/tools/display-names.d.ts +9 -0
  1049. package/dist/tools/display-names.js +24 -0
  1050. package/dist/tools/drift.d.ts +29 -41
  1051. package/dist/tools/drift.js +116 -84
  1052. package/dist/tools/elicitation.js +1 -1
  1053. package/dist/tools/extension-tools.controller.d.ts +14 -0
  1054. package/dist/tools/extension-tools.controller.js +37 -0
  1055. package/dist/tools/info.d.ts +73 -13
  1056. package/dist/tools/info.js +151 -39
  1057. package/dist/tools/job-ids.d.ts +13 -0
  1058. package/dist/tools/job-ids.js +15 -0
  1059. package/dist/tools/jobs.d.ts +24 -0
  1060. package/dist/tools/jobs.js +69 -0
  1061. package/dist/tools/legacy-data.d.ts +34 -0
  1062. package/dist/tools/legacy-data.js +76 -0
  1063. package/dist/tools/legacy-keys.d.ts +51 -0
  1064. package/dist/tools/legacy-keys.js +115 -0
  1065. package/dist/tools/naming.d.ts +1 -5
  1066. package/dist/tools/naming.js +1 -7
  1067. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  1068. package/dist/tools/oauth/flow-paths.js +38 -0
  1069. package/dist/tools/oauth/flow.d.ts +30 -30
  1070. package/dist/tools/oauth/flow.js +109 -81
  1071. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  1072. package/dist/tools/oauth/oauth.controller.js +12 -9
  1073. package/dist/tools/oauth/tokens.d.ts +45 -10
  1074. package/dist/tools/oauth/tokens.js +70 -24
  1075. package/dist/tools/org-tool-switches.d.ts +88 -0
  1076. package/dist/tools/org-tool-switches.js +201 -0
  1077. package/dist/tools/outputs.d.ts +13 -4
  1078. package/dist/tools/outputs.js +48 -4
  1079. package/dist/tools/pipeline.d.ts +108 -80
  1080. package/dist/tools/pipeline.js +396 -409
  1081. package/dist/tools/policy.d.ts +4 -17
  1082. package/dist/tools/policy.js +49 -35
  1083. package/dist/tools/questions.controller.d.ts +2 -2
  1084. package/dist/tools/questions.controller.js +9 -6
  1085. package/dist/tools/questions.service.d.ts +26 -25
  1086. package/dist/tools/questions.service.js +201 -142
  1087. package/dist/tools/registry.d.ts +215 -84
  1088. package/dist/tools/registry.js +382 -264
  1089. package/dist/tools/resources.d.ts +1 -1
  1090. package/dist/tools/resources.js +1 -1
  1091. package/dist/tools/specs.d.ts +5 -4
  1092. package/dist/tools/specs.js +3 -1
  1093. package/dist/tools/tools.module.d.ts +10 -0
  1094. package/dist/tools/tools.module.js +113 -0
  1095. package/dist/tools/validate.js +1 -1
  1096. package/dist/ui/call-extension.d.ts +16 -0
  1097. package/dist/ui/call-extension.js +38 -0
  1098. package/dist/ui/embed-token.d.ts +9 -5
  1099. package/dist/ui/embed-token.js +34 -6
  1100. package/dist/ui/ui-stream.d.ts +22 -17
  1101. package/dist/ui/ui-stream.js +72 -12
  1102. package/dist/ui/ui.module.d.ts +7 -0
  1103. package/dist/ui/ui.module.js +28 -0
  1104. package/dist/ui/views.controller.d.ts +14 -12
  1105. package/dist/ui/views.controller.js +32 -25
  1106. package/dist/ui/views.d.ts +10 -57
  1107. package/dist/ui/views.js +58 -46
  1108. package/package.json +13 -3
  1109. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  1110. package/src/migrations/0064_account_last_org.sql +7 -0
  1111. package/src/migrations/0065_conversation_archive.sql +8 -0
  1112. package/src/migrations/0066_extension_display_name.sql +4 -0
  1113. package/src/migrations/0067_agent_profiles.sql +20 -0
  1114. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  1115. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  1116. package/src/migrations/0070_background_tasks.sql +37 -0
  1117. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  1118. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  1119. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  1120. package/src/migrations/0074_subagent_tree.sql +50 -0
  1121. package/src/migrations/0075_plugin_scope.sql +61 -0
  1122. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  1123. package/src/migrations/0077_scope_requests.sql +52 -0
  1124. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  1125. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  1126. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  1127. package/src/migrations/0081_platform_components.sql +129 -0
  1128. package/src/migrations/0082_platform_migration.sql +33 -0
  1129. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1130. package/src/migrations/0084_org_owned_items.sql +85 -0
  1131. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1132. package/src/migrations/0086_org_layering.sql +30 -0
  1133. package/src/migrations/0087_approval_summary.sql +6 -0
  1134. package/src/migrations/0088_environments.sql +80 -0
  1135. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1136. package/src/migrations/0090_initial_passwords.sql +27 -0
  1137. package/src/migrations/0091_account_time_zone.sql +4 -0
  1138. package/src/migrations/0092_tools_default_on.sql +27 -0
  1139. package/src/migrations/0093_connected_environments.sql +37 -0
  1140. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1141. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1142. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1143. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1144. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1145. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1146. package/src/migrations/0100_catalog_files.sql +13 -0
  1147. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1148. package/src/migrations/0102_themes.sql +64 -0
  1149. package/src/migrations/0103_ui_theme_setting.sql +7 -0
  1150. package/dist/catalog/upgrade-targets.d.ts +0 -59
  1151. package/dist/catalog/upgrade-targets.js +0 -90
  1152. package/dist/conversations/sandbox-status.d.ts +0 -21
  1153. package/dist/conversations/sandbox-status.js +0 -24
  1154. package/dist/extensions/org-config.controller.d.ts +0 -24
  1155. package/dist/extensions/org-config.controller.js +0 -59
  1156. package/dist/http/gateway.module.js +0 -13
  1157. package/dist/http/health.controller.d.ts +0 -26
  1158. package/dist/http/health.controller.js +0 -79
  1159. package/dist/http/tokens.d.ts +0 -131
  1160. package/dist/http/tokens.js +0 -131
  1161. package/dist/http/zod.pipe.d.ts +0 -8
  1162. package/dist/http/zod.pipe.js +0 -14
  1163. package/dist/identity/enterprise-admin.d.ts +0 -14
  1164. package/dist/identity/enterprise-admin.js +0 -27
  1165. package/dist/identity/rate-limit.d.ts +0 -55
  1166. package/dist/identity/rate-limit.js +0 -121
  1167. package/dist/sandbox/lifecycle.d.ts +0 -21
  1168. package/dist/sandbox/lifecycle.js +0 -68
  1169. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1170. package/dist/tools/builtins/sandbox/names.js +0 -20
@@ -1,20 +1,43 @@
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
+ };
1
10
  import { randomUUID } from "node:crypto";
2
11
  import { parseSkillMd, SKILL_ENTRY_FILE } from "@capybara-hq/plugin-sdk";
12
+ import { Inject, Injectable } from "@nestjs/common";
3
13
  import { sql } from "kysely";
4
- import { assertItemInstallable } from "../catalog/requests.service.js";
5
- import { SKILL_PACKAGE_CONTENT_TYPE, skillFilesPrefix, } from "../conversations/attachments.service.js";
14
+ import { offeredNamed } from "../catalog/component-state.js";
15
+ import { PLATFORM_OWNER } from "../catalog/ownership.js";
16
+ import { PlatformComponents } from "../catalog/platform-components.js";
17
+ import { assertItemInstallable } from "../catalog/request-rules.js";
18
+ import { AttachmentsService, SKILL_PACKAGE_CONTENT_TYPE, skillFilesPrefix, } from "../conversations/attachments.service.js";
6
19
  import { ApiError } from "../errors.js";
7
20
  import { audit } from "../identity/audit.js";
8
21
  import { assertCustomAllowed } from "../identity/settings.js";
9
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
22
+ import { notifySharedUpdate } from "../inbox/org-notices.js";
23
+ import { KernelDb } from "../infra/database/kernel-db.js";
24
+ import { TransactionHost } from "../infra/database/transaction-host.js";
25
+ import { Transactional } from "../infra/database/transactional.decorator.js";
26
+ import { OrgLock } from "../orgs/org-lock.js";
10
27
  import { textBytesTokens } from "../runtime/context/tokens.js";
28
+ import { StorageService } from "../storage/storage.service.js";
29
+ import { buildSkillWrite } from "../tools/builtins/skill-write.js";
11
30
  import { invocationOf, PINNED_SKILLS_LIMITS } from "./catalog.js";
12
- import { readSkillPackage, storedInvocation } from "./package.js";
31
+ import { checkBuiltSkillFiles, readSkillPackage, skillManifest, } from "./package.js";
32
+ import { PLATFORM_SOURCE, platformSkillsOn, platformSource, skillFileStore, skillVersionsById, usableSkills, } from "./usable.js";
13
33
  /**
14
- * The live org skills named in `skillNames` whose provenance is not catalog item `itemId` (spec
15
- * §9.2, Decision 8): the org's own skills (`catalog_item_id` null: uploaded or written by an
16
- * agent) and the skills of other catalog items. A skill of the same item (a reinstall or upgrade)
17
- * is not a conflict. In the order of `skillNames`.
34
+ * The skills named in `skillNames` an org would see twice if catalog item `itemId` brought its
35
+ * skills (spec §9.2, Decision 8; rule 10 of the plugin scope spec): the org's own usable skills
36
+ * (`catalog_item_id` null: uploaded or written by an agent; unlinked, or pinned copies of another
37
+ * plugin's platform skill), org skills of other catalog items, and other plugins' platform skills
38
+ * on in the org. A skill of the same item (an org copy of it, linked or not) is not a conflict;
39
+ * an unpinned copy of another plugin's platform skill counts through that platform skill. In the
40
+ * order of `skillNames`.
18
41
  */
19
42
  export async function skillConflicts(db, orgId, itemId, skillNames) {
20
43
  if (skillNames.length === 0)
@@ -22,32 +45,71 @@ export async function skillConflicts(db, orgId, itemId, skillNames) {
22
45
  const rows = await db
23
46
  .selectFrom("skills as s")
24
47
  .leftJoin("catalog_items as i", "i.id", "s.catalog_item_id")
25
- .select(["s.name", "s.catalog_item_id", "s.catalog_version", "i.name as item_name"])
48
+ .leftJoin("platform_skills as p", "p.id", "s.platform_skill_id")
49
+ .select([
50
+ "s.name",
51
+ "s.catalog_item_id",
52
+ "s.catalog_version",
53
+ "i.name as item_name",
54
+ "p.catalog_item_id as platform_item_id",
55
+ "p.plugin_name as platform_plugin",
56
+ ])
26
57
  .where("s.org_id", "=", orgId)
27
58
  .where("s.scope", "=", "org")
28
59
  .where("s.deleted_at", "is", null)
29
60
  .where("s.name", "in", [...skillNames])
61
+ .where((eb) => eb.or([eb("s.platform_skill_id", "is", null), eb("s.pinned_version", "is not", null)]))
30
62
  .where((eb) => eb.or([eb("s.catalog_item_id", "is", null), eb("s.catalog_item_id", "<>", itemId)]))
63
+ .where((eb) => eb.or([eb("p.catalog_item_id", "is", null), eb("p.catalog_item_id", "<>", itemId)]))
64
+ .execute();
65
+ const byName = new Map();
66
+ for (const r of rows) {
67
+ byName.set(r.name, r.catalog_item_id !== null
68
+ ? {
69
+ kind: "plugin",
70
+ name: r.item_name ?? r.catalog_item_id,
71
+ version: r.catalog_version ?? "",
72
+ }
73
+ : r.platform_plugin !== null
74
+ ? { kind: "plugin", name: r.platform_plugin, version: "" }
75
+ : { kind: "org" });
76
+ }
77
+ const platform = await db
78
+ .selectFrom("platform_skills as p")
79
+ .innerJoin("platform_skill_versions as v", (j) => j.onRef("v.skill_id", "=", "p.id").onRef("v.version", "=", "p.current_version"))
80
+ .select(["p.id", "p.name", "p.plugin_name", "v.catalog_version"])
81
+ .where("p.deleted_at", "is", null)
82
+ .where("p.name", "in", [...skillNames])
83
+ .where((eb) => eb.or([eb("p.catalog_item_id", "is", null), eb("p.catalog_item_id", "<>", itemId)]))
31
84
  .execute();
32
- const byName = new Map(rows.map((r) => [r.name, r]));
85
+ const on = await platformSkillsOn(db, orgId, platform.map((p) => p.id));
86
+ for (const p of platform) {
87
+ if (!on.has(p.id) || byName.has(p.name))
88
+ continue;
89
+ byName.set(p.name, p.plugin_name !== null
90
+ ? { kind: "plugin", name: p.plugin_name, version: p.catalog_version ?? "" }
91
+ : { kind: "plugin", name: "platform", version: "" });
92
+ }
33
93
  const out = [];
34
94
  for (const name of new Set(skillNames)) {
35
- const r = byName.get(name);
36
- if (!r)
37
- continue;
38
- out.push({
39
- skill: name,
40
- source: r.catalog_item_id === null
41
- ? { kind: "org" }
42
- : {
43
- kind: "plugin",
44
- name: r.item_name ?? r.catalog_item_id,
45
- version: r.catalog_version ?? "",
46
- },
47
- });
95
+ const source = byName.get(name);
96
+ if (source)
97
+ out.push({ skill: name, source });
48
98
  }
49
99
  return out;
50
100
  }
101
+ /**
102
+ * 409 `plugin.skill_conflict` for a new org skill named like platform skills offered to the org
103
+ * (rule 10): one detail per platform skill, its plugin as the source.
104
+ */
105
+ function platformNameTaken(name, offered) {
106
+ const sources = offered.map((p) => ({
107
+ skill: name,
108
+ source: { kind: "plugin", name: p.plugin ?? "platform", version: "" },
109
+ }));
110
+ const by = sources.map((s) => `plugin "${s.source.name}"`).join(", ");
111
+ return new ApiError("plugin.skill_conflict", `Skill "${name}" is offered to this organization by ${by}; skill names are unique in an organization. Rename your skill and upload it again.`, sources);
112
+ }
51
113
  /** One line of the conflict message (spec §9.2). */
52
114
  export function skillConflictLine(c) {
53
115
  const source = c.source.kind === "org"
@@ -64,12 +126,26 @@ const PUT_CONCURRENCY = 4;
64
126
  /** 详情里读取 SKILL.md 正文的上限。 */
65
127
  export const SKILL_BODY_MAX_BYTES = 1024 * 1024;
66
128
  const notFound = () => new ApiError("skill.not_found", "Skill not found");
129
+ const nameExists = (name) => new ApiError("skill.name_exists", `A skill named "${name}" already exists in this organization. Choose another name.`);
130
+ /** The checked files of a skill written as text (a built `SKILL.md`); `validation_failed` if not. */
131
+ function textSkillFiles(input) {
132
+ const built = buildSkillWrite({
133
+ name: input.name,
134
+ description: input.description,
135
+ files: [{ path: SKILL_ENTRY_FILE, content: input.body }],
136
+ });
137
+ if ("errors" in built) {
138
+ throw new ApiError("validation_failed", `Invalid skill: ${built.errors[0] ?? "unknown problem"}`, built.errors.map((message) => ({ path: "body", message })));
139
+ }
140
+ return checkBuiltSkillFiles(built.files);
141
+ }
67
142
  /**
68
- * 在调用方事务里核对 agent 定义引用的组织技能:每个 id 都必须是该组织未删除的 `scope=org` 技能,
143
+ * 在调用方事务里核对 agent 定义引用的组织技能:每个 id 都必须是该组织未删除的 `scope=org` 技能
144
+ * (or, phase 2, a platform skill on in the org: skills/usable.ts),
69
145
  * 否则 `validation_failed`(path `skills.orgSkills.<i>`);不可重复。调用方须已锁组织行(技能删除同样锁组织行,二者串行)。
70
146
  * `kept`:当前版本里已有的引用(保存时合法),修改时不再核对——技能之后被删也不挡住其他改动(运行时由 T14 忽略已删除的技能)。
71
147
  */
72
- export async function assertOrgSkills(t, orgId, ids, kept = new Set()) {
148
+ export async function assertOrgSkills(db, orgId, ids, kept = new Set()) {
73
149
  const details = [];
74
150
  const seen = new Set();
75
151
  ids.forEach((id, i) => {
@@ -79,15 +155,12 @@ export async function assertOrgSkills(t, orgId, ids, kept = new Set()) {
79
155
  });
80
156
  const toCheck = [...seen].filter((id) => !kept.has(id));
81
157
  if (toCheck.length > 0) {
82
- const found = await t
83
- .selectFrom("skills")
84
- .select("id")
85
- .where("org_id", "=", orgId)
86
- .where("scope", "=", "org")
87
- .where("deleted_at", "is", null)
88
- .where("id", "in", toCheck)
89
- .execute();
90
- const live = new Set([...kept, ...found.map((r) => r.id)]);
158
+ // The org's skills, its copies linked to a platform skill while that one is on in the org
159
+ // (as `assertPinnedSkills` sees them), and platform skills on in the org (phase 2)
160
+ const found = [...(await skillVersionsById(db, orgId, toCheck)).values()]
161
+ .filter((r) => r.scope === "org")
162
+ .map((r) => r.id);
163
+ const live = new Set([...kept, ...found]);
91
164
  ids.forEach((id, i) => {
92
165
  if (!live.has(id)) {
93
166
  details.push({
@@ -117,7 +190,7 @@ export async function assertOrgSkills(t, orgId, ids, kept = new Set()) {
117
190
  * when the pinned list changed: a pinned skill's new version never blocks an unrelated edit (the
118
191
  * run keeps what fits).
119
192
  */
120
- export async function assertPinnedSkills(t, orgId, agentId, skills, kept = []) {
193
+ export async function assertPinnedSkills(db, orgId, agentId, skills, kept = []) {
121
194
  const pinned = skills?.pinned;
122
195
  if (pinned === undefined)
123
196
  return;
@@ -136,17 +209,12 @@ export async function assertPinnedSkills(t, orgId, agentId, skills, kept = []) {
136
209
  }
137
210
  unique.push(id);
138
211
  }
139
- const rows = unique.length === 0
140
- ? []
141
- : await t
142
- .selectFrom("skills as s")
143
- .innerJoin("skill_versions as v", (j) => j.onRef("v.skill_id", "=", "s.id").onRef("v.version", "=", "s.current_version"))
144
- .select(["s.id", "s.scope", "s.agent_id", "v.manifest"])
145
- .where("s.org_id", "=", orgId)
146
- .where("s.deleted_at", "is", null)
147
- .where("s.id", "in", unique)
148
- .execute();
149
- const byId = new Map(rows.map((r) => [r.id, r]));
212
+ // org and agent skills, org copies linked to a platform skill (its current version) and platform
213
+ // skills on in the org (phase 2)
214
+ const byId = new Map([...(await skillVersionsById(db, orgId, unique)).values()].map((r) => [
215
+ r.id,
216
+ { id: r.id, scope: r.scope, agent_id: r.agentId, manifest: r.manifest },
217
+ ]));
150
218
  const keptSet = new Set(kept);
151
219
  const selected = new Set(skills?.orgSkills ?? []);
152
220
  for (const id of unique) {
@@ -198,8 +266,52 @@ const summary = (r) => {
198
266
  tokenEstimate: textBytesTokens(entryBytes),
199
267
  manual: inv.model === false,
200
268
  fork: inv.fork !== undefined,
269
+ origin: "org",
270
+ shareable: r.scope === "org" && r.shareable,
201
271
  };
202
272
  };
273
+ /** Platform skills with the columns of {@link summary} (phase 2). */
274
+ const platformSummaryQuery = (db) => db
275
+ .selectFrom("platform_skills as p")
276
+ .leftJoin("platform_skill_versions as v", (j) => j.onRef("v.skill_id", "=", "p.id").onRef("v.version", "=", "p.current_version"))
277
+ .leftJoin("orgs as owner", "owner.id", "p.owner_org_id")
278
+ .select([
279
+ "p.id",
280
+ "p.name",
281
+ "p.description",
282
+ "p.current_version",
283
+ "p.created_at",
284
+ "p.updated_at",
285
+ "p.plugin_name",
286
+ "p.owner_org_id",
287
+ "owner.name as owner_name",
288
+ "v.source_format",
289
+ "v.suggest_pinned",
290
+ "v.manifest",
291
+ ])
292
+ .where("p.deleted_at", "is", null);
293
+ const platformSummary = (r) => ({
294
+ ...summary({
295
+ id: r.id,
296
+ scope: "org",
297
+ agent_id: null,
298
+ name: r.name,
299
+ description: r.description,
300
+ current_version: r.current_version,
301
+ created_by: null,
302
+ created_at: r.created_at,
303
+ updated_at: r.updated_at,
304
+ item_name: r.plugin_name,
305
+ source_format: r.source_format,
306
+ suggest_pinned: r.suggest_pinned,
307
+ manifest: r.manifest,
308
+ shareable: false,
309
+ }),
310
+ origin: "platform",
311
+ owner: r.owner_org_id === null
312
+ ? PLATFORM_OWNER
313
+ : { kind: "org", orgId: r.owner_org_id, name: r.owner_name ?? r.owner_org_id },
314
+ });
203
315
  /**
204
316
  * Skills with their summary columns: the catalog item name (provenance) and the current version's
205
317
  * source format, pinned suggestion and manifest.
@@ -222,21 +334,71 @@ const summaryQuery = (db) => db
222
334
  "v.source_format",
223
335
  "v.suggest_pinned",
224
336
  "v.manifest",
337
+ "s.shareable",
225
338
  ]);
226
339
  /**
227
340
  * 技能库(M5 T13):组织技能的上传(新技能或新版本)、列表、详情与软删除。
228
341
  * 字节在对象存储 `kernel/<orgId>/skills/<uploadId>/<path>`,元数据在 PG;无进程内状态,可多副本共用。
229
342
  */
230
- export class SkillsService {
231
- d;
232
- constructor(d) {
233
- this.d = d;
343
+ export { skillManifest } from "./package.js";
344
+ let SkillsService = class SkillsService {
345
+ db;
346
+ storage;
347
+ attachments;
348
+ txHost;
349
+ orgLock;
350
+ platform;
351
+ constructor(db, storage, attachments, txHost, orgLock,
352
+ /** The owner's new versions of a skill it promoted go to the platform row (ruling P3-4). */
353
+ platform) {
354
+ this.db = db;
355
+ this.storage = storage;
356
+ this.attachments = attachments;
357
+ this.txHost = txHost;
358
+ this.orgLock = orgLock;
359
+ this.platform = platform;
360
+ }
361
+ /**
362
+ * Writes a package's files where its version will live: for a new version of a skill the org
363
+ * promoted (ruling P3-3: a live org skill of the name linked without a pin to a platform skill
364
+ * the org owns), the platform row's next version prefix in `deployment/` (ruling P3-4); else
365
+ * `kernel/<orgId>/<prefix>`. Returns the platform version prepared, if any. Never inside a
366
+ * transaction; the transaction checks that the skill is still promoted (and still at that
367
+ * version).
368
+ */
369
+ async putVersionFiles(orgId, pkg, prefix, catalog) {
370
+ const promoted = catalog ? undefined : await promotedSkillNamed(this.db.db, orgId, pkg.name);
371
+ if (promoted !== undefined)
372
+ return this.platform.prepareOwnerVersion(promoted, pkg.files);
373
+ await this.putFiles(orgId, prefix, pkg.files);
374
+ return undefined;
375
+ }
376
+ /**
377
+ * The summary of the org's skill `copyId` it promoted to `platformId`, as it serves now: the
378
+ * platform row's current version (ruling P3-4) under the org row's id, still the org's own.
379
+ */
380
+ async promotedSummary(copyId, platformId) {
381
+ const own = await summaryQuery(this.db.db).where("s.id", "=", copyId).executeTakeFirstOrThrow();
382
+ const p = await platformSummaryQuery(this.db.db)
383
+ .where("p.id", "=", platformId)
384
+ .executeTakeFirst();
385
+ if (!p)
386
+ return summary(own);
387
+ return {
388
+ ...platformSummary(p),
389
+ id: copyId,
390
+ origin: "org",
391
+ plugin: own.item_name,
392
+ createdBy: own.created_by,
393
+ createdAt: own.created_at,
394
+ shareable: own.shareable,
395
+ };
234
396
  }
235
397
  /** 登记一个技能包上传(预签名 POST,`application/zip`,≤ 50MB);角色由路由的 `skills.manage` 把关。 */
236
398
  async createUpload(orgId, accountId, input) {
237
- // 部署设置 customSkills 为 deny:组织只能从企业目录安装技能(C22)
238
- await assertCustomAllowed(this.d.db, "customSkills");
239
- return this.d.attachments.create(orgId, accountId, { name: input.name, contentType: SKILL_PACKAGE_CONTENT_TYPE, size: input.size }, "skill-package");
399
+ // 部署设置 customSkills 为 deny:组织只能从平台目录安装技能(C22)
400
+ await assertCustomAllowed(this.db.db, "customSkills");
401
+ return this.attachments.create(orgId, accountId, { name: input.name, contentType: SKILL_PACKAGE_CONTENT_TYPE, size: input.size }, "skill-package");
240
402
  }
241
403
  /**
242
404
  * 用一个技能包上传创建技能或新增版本:
@@ -247,11 +409,11 @@ export class SkillsService {
247
409
  * 第 3 步之前中断不会留下可见的版本;已写的文件由清理任务在上传过期后删除(未被任何版本引用时)。
248
410
  * 同一上传已经产生过版本(上次提交了、响应丢了而重试)→ 直接返回那个版本(同组织、同一发起人)。
249
411
  */
250
- async upload(orgId, actorAccountId, uploadId, actorTokenId) {
251
- this.d.storage.assertAvailable();
412
+ async upload(orgId, actorAccountId, uploadId, actorTokenId, shareable) {
413
+ this.storage.assertAvailable();
252
414
  const prefix = skillFilesPrefix(uploadId);
253
415
  // 重试(上次已提交、响应丢了):同一上传已产生的版本直接返回,不再要求上传仍可用
254
- const done = await this.d.db
416
+ const done = await this.db
255
417
  .selectFrom("skill_versions")
256
418
  .innerJoin("skills", "skills.id", "skill_versions.skill_id")
257
419
  .select(["skills.id", "skill_versions.version"])
@@ -261,37 +423,115 @@ export class SkillsService {
261
423
  .where("skills.deleted_at", "is", null)
262
424
  .executeTakeFirst();
263
425
  if (done) {
264
- const row = await summaryQuery(this.d.db)
426
+ const row = await summaryQuery(this.db.db)
265
427
  .where("s.id", "=", done.id)
266
428
  .executeTakeFirstOrThrow();
267
429
  return { skill: summary(row), version: done.version, created: done.version === 1 };
268
430
  }
269
431
  // 自建被禁止时先拒绝(事务里再复核一次)
270
- await assertCustomAllowed(this.d.db, "customSkills");
271
- const zip = await this.d.attachments.readSkillPackage(orgId, actorAccountId, uploadId);
432
+ await assertCustomAllowed(this.db.db, "customSkills");
433
+ const zip = await this.attachments.readSkillPackage(orgId, actorAccountId, uploadId);
272
434
  const pkg = await readSkillPackage(zip);
273
- return this.createVersionFromFiles(orgId, actorAccountId, pkg, {
435
+ // A skill the org promoted gets its version on the platform row (ruling P3-4). Its retry after
436
+ // a lost response is not recognized above (the lookup is by the org prefix): the consumed
437
+ // upload is refused and the owner sees the version in the library (accepted, review M6)
438
+ const owner = await this.putVersionFiles(orgId, pkg, prefix, false);
439
+ try {
440
+ return await this.createUploadedVersionIn(orgId, actorAccountId, uploadId, pkg, prefix, actorTokenId, shareable, owner);
441
+ }
442
+ catch (e) {
443
+ if (owner !== undefined)
444
+ await this.platform.discardPrefix(owner.prefix);
445
+ throw e;
446
+ }
447
+ }
448
+ /**
449
+ * The transaction of {@link upload}: under the org row lock (re-checking `skills.manage`), the
450
+ * custom-skill policy is re-checked and the upload consumed (of concurrent requests for the same
451
+ * upload only one succeeds), then the version is written in the same transaction
452
+ * ({@link createVersionIn} joins it).
453
+ */
454
+ async createUploadedVersionIn(orgId, actorAccountId, uploadId, pkg, prefix, actorTokenId, shareable, owner) {
455
+ await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "skills.manage");
456
+ await assertCustomAllowed(this.db.db, "customSkills");
457
+ await this.attachments.consumeSkillPackage(orgId, actorAccountId, uploadId);
458
+ return this.createVersionIn(orgId, actorAccountId, pkg, skillManifest(pkg), prefix, {
274
459
  prefix,
275
460
  ...(actorTokenId !== undefined && { actorTokenId }),
276
- inTransaction: async (t) => {
277
- await assertCustomAllowed(t, "customSkills");
278
- await this.d.attachments.consumeSkillPackage(t, orgId, actorAccountId, uploadId);
279
- },
461
+ ...(shareable !== undefined && { shareable }),
462
+ ...(owner !== undefined && { owner }),
280
463
  });
281
464
  }
282
465
  /**
283
- * 用一组已校验的技能文件创建组织技能或给同名技能新增版本(上传与企业目录安装共用):
466
+ * The read-only checks of {@link createFromText}, for the `Platform` tool's precheck (before the
467
+ * card): custom skills allowed, a valid `SKILL.md`, and no live org skill of the name. Throws the
468
+ * same `ApiError` the create would; the create checks the name again under its lock.
469
+ */
470
+ async checkCreateFromText(orgId, input) {
471
+ await assertCustomAllowed(this.db.db, "customSkills");
472
+ const pkg = textSkillFiles(input);
473
+ const existing = await this.db
474
+ .selectFrom("skills")
475
+ .select("id")
476
+ .where("org_id", "=", orgId)
477
+ .where("scope", "=", "org")
478
+ .where("name", "=", pkg.name)
479
+ .where("deleted_at", "is", null)
480
+ .executeTakeFirst();
481
+ if (existing)
482
+ throw nameExists(pkg.name);
483
+ }
484
+ /**
485
+ * Creates an org skill from text (spec §14, P3-24): `SKILL.md` is built from the name,
486
+ * description and body ({@link buildSkillWrite}, the description a YAML string) and checked like
487
+ * an uploaded package. The same policy and name rules as an upload, except that a live org skill
488
+ * of that name is `skill.name_exists` (409) instead of a new version.
489
+ */
490
+ async createFromText(orgId, actorAccountId, input) {
491
+ this.storage.assertAvailable();
492
+ await assertCustomAllowed(this.db.db, "customSkills");
493
+ const pkg = textSkillFiles(input);
494
+ const prefix = skillFilesPrefix(randomUUID());
495
+ await this.putFiles(orgId, prefix, pkg.files);
496
+ return this.createVersionIn(orgId, actorAccountId, pkg, skillManifest(pkg), prefix, {
497
+ prefix,
498
+ failIfExists: true,
499
+ ...(input.actorTokenId !== undefined && { actorTokenId: input.actorTokenId }),
500
+ ...(input.auditDetail !== undefined && { auditDetail: input.auditDetail }),
501
+ ...(input.shareable !== undefined && { shareable: input.shareable }),
502
+ });
503
+ }
504
+ /**
505
+ * 用一组已校验的技能文件创建组织技能或给同名技能新增版本(上传与平台目录安装共用):
284
506
  * 1. 把文件写到 `kernel/<orgId>/<prefix>`(缺省 `skills/<新 id>/`);
285
- * 2. 一个事务里:锁组织行并复核 `skills.manage`,执行 `inTransaction`(上传:标记上传已用;目录:按条目策略复核),
507
+ * 2. 一个事务里:锁组织行并复核 `skills.manage`(目录安装:按条目策略复核),
286
508
  * 同名未删除的组织技能存在则 `current_version + 1`,否则新建;技能与版本都记下 `directory` 来源(没有则清空:
287
509
  * 自定义上传盖在目录技能上就不再算目录安装),写版本与审计
288
510
  * (`skill.created` / `skill.version_created`,目录安装时 detail 带 directory)。
289
511
  */
290
- async createVersionFromFiles(orgId, actorAccountId, pkg, opts = {}) {
291
- this.d.storage.assertAvailable();
512
+ async createVersionFromFiles(orgId,
513
+ /** null: the kernel itself (the plugin scope sync installing a plugin), no role check. */
514
+ actorAccountId, pkg, opts = {}) {
515
+ this.storage.assertAvailable();
292
516
  const prefix = opts.prefix ?? skillFilesPrefix(randomUUID());
293
- const store = this.d.storage.kernel(orgId);
294
- const queue = [...pkg.files];
517
+ const owner = await this.putVersionFiles(orgId, pkg, prefix, opts.catalog !== undefined);
518
+ try {
519
+ return await this.createVersionIn(orgId, actorAccountId, pkg, skillManifest(pkg), prefix, {
520
+ ...opts,
521
+ ...(owner !== undefined && { owner }),
522
+ });
523
+ }
524
+ catch (e) {
525
+ // the loser of two owner versions racing for one number: its objects go (ruling P3-45)
526
+ if (owner !== undefined)
527
+ await this.platform.discardPrefix(owner.prefix);
528
+ throw e;
529
+ }
530
+ }
531
+ /** Writes a skill package's files to `kernel/<orgId>/<prefix>` (a few at a time). */
532
+ async putFiles(orgId, prefix, files) {
533
+ const store = this.storage.kernel(orgId);
534
+ const queue = [...files];
295
535
  await Promise.all(Array.from({ length: Math.min(PUT_CONCURRENCY, queue.length) }, async () => {
296
536
  for (let f = queue.shift(); f; f = queue.shift()) {
297
537
  await store.put(`${prefix}${f.path}`, f.data, {
@@ -300,108 +540,145 @@ export class SkillsService {
300
540
  });
301
541
  }
302
542
  }));
303
- const invocation = pkg.invocation && storedInvocation(pkg.invocation);
304
- const manifest = {
305
- name: pkg.name,
306
- description: pkg.description,
307
- files: pkg.files.map(({ path, size, sha256 }) => ({ path, size, sha256 })),
308
- ...(invocation !== undefined && { invocation }),
309
- };
310
- const actorTokenId = opts.actorTokenId;
311
- return this.d.db.transaction().execute(async (t) => {
312
- await lockOrgAndAuthorize(t, orgId, actorAccountId, "skills.manage");
313
- if (opts.catalog) {
314
- const c = opts.catalog;
315
- await assertItemInstallable(t, orgId, c.itemId, c.approvedBy ?? c.itemId);
316
- }
317
- await opts.inTransaction?.(t);
318
- const existing = await t
319
- .selectFrom("skills")
320
- .select(["id", "current_version", "catalog_item_id"])
321
- .where("org_id", "=", orgId)
322
- .where("scope", "=", "org")
323
- .where("name", "=", pkg.name)
324
- .where("deleted_at", "is", null)
325
- .forUpdate()
326
- .executeTakeFirst();
327
- // A catalog install never overwrites a skill of other provenance (spec §9.2; planning checks
328
- // it first, this closes the race with a skill created since)
329
- if (existing && opts.catalog && existing.catalog_item_id !== opts.catalog.itemId) {
330
- const conflicts = await skillConflicts(t, orgId, opts.catalog.itemId, [pkg.name]);
331
- if (conflicts.length > 0)
332
- throw skillConflictError(conflicts);
543
+ }
544
+ /** The transaction of {@link createVersionFromFiles}. */
545
+ async createVersionIn(orgId, actorAccountId, pkg, manifest, prefix, opts) {
546
+ await this.orgLock.lockFor(orgId, actorAccountId, "skills.manage");
547
+ if (opts.catalog) {
548
+ const c = opts.catalog;
549
+ await assertItemInstallable(this.db.db, orgId, c.itemId, c.approvedBy ?? c.itemId);
550
+ }
551
+ const existing = await this.db
552
+ .selectFrom("skills")
553
+ .select(["id", "current_version", "catalog_item_id", "platform_skill_id"])
554
+ .where("org_id", "=", orgId)
555
+ .where("scope", "=", "org")
556
+ .where("name", "=", pkg.name)
557
+ .where("deleted_at", "is", null)
558
+ .forUpdate()
559
+ .executeTakeFirst();
560
+ if (existing && opts.failIfExists)
561
+ throw nameExists(pkg.name);
562
+ // The org's own skill it promoted (ruling P3-3): its new version goes to the platform row and
563
+ // reaches every org using it (ruling P3-4); the files were written there before this
564
+ // transaction, for the platform version current then
565
+ const promoted = existing && !opts.catalog
566
+ ? await promotedSkillNamed(this.db.db, orgId, pkg.name, existing.id)
567
+ : undefined;
568
+ if (promoted !== undefined || opts.owner !== undefined) {
569
+ if (existing === undefined || promoted === undefined || opts.owner?.platformId !== promoted) {
570
+ throw new ApiError("component.version_stale", "The skill changed while this version was uploaded; upload it again");
333
571
  }
334
- const id = existing?.id ?? randomUUID();
335
- const version = (existing?.current_version ?? 0) + 1;
336
- // 来源跟着最新版本走:目录安装记条目与版本,自定义上传清掉(内容已不是目录里的那份)
337
- const provenance = {
338
- catalog_item_id: opts.catalog?.itemId ?? null,
339
- catalog_version: opts.catalog?.version ?? null,
572
+ const version = await this.platform.addOwnerVersionIn(opts.owner, manifest, actorAccountId);
573
+ await audit(this.db.db, {
574
+ actorAccountId,
575
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
576
+ orgId,
577
+ action: "skill.version_created",
578
+ target: existing.id,
579
+ detail: { name: pkg.name, version, files: manifest.files.length, platformId: promoted },
580
+ });
581
+ await notifySharedUpdate(this.db.db, { kind: "skill", id: promoted }, { name: pkg.name, from: String(version - 1), to: String(version) });
582
+ return {
583
+ skill: await this.promotedSummary(existing.id, promoted),
584
+ version,
585
+ created: false,
340
586
  };
341
- if (existing) {
342
- await t
343
- .updateTable("skills")
344
- .set({
345
- current_version: version,
346
- description: pkg.description,
347
- ...provenance,
348
- updated_at: sql `now()`,
349
- })
350
- .where("id", "=", id)
351
- .execute();
352
- }
353
- else {
354
- await t
355
- .insertInto("skills")
356
- .values({
357
- id,
358
- org_id: orgId,
359
- scope: "org",
360
- agent_id: null,
361
- name: pkg.name,
362
- description: pkg.description,
363
- current_version: 1,
364
- created_by: actorAccountId,
365
- ...provenance,
366
- })
367
- .execute();
368
- }
369
- await t
370
- .insertInto("skill_versions")
587
+ }
588
+ // A catalog install never overwrites a skill of other provenance (spec §9.2; planning checks
589
+ // it first, this closes the race with a skill created since)
590
+ if (existing && opts.catalog && existing.catalog_item_id !== opts.catalog.itemId) {
591
+ const conflicts = await skillConflicts(this.db.db, orgId, opts.catalog.itemId, [pkg.name]);
592
+ if (conflicts.length > 0)
593
+ throw skillConflictError(conflicts);
594
+ }
595
+ // Rule 10 (plugin scope phase 2, ruling P2-3): a new org skill may not take the name of a
596
+ // platform skill offered to the org (on, or one an org admin could switch on)
597
+ if (!existing && !opts.catalog) {
598
+ const offered = await offeredNamed(this.db.db, orgId, "skill", pkg.name);
599
+ if (offered.length > 0)
600
+ throw platformNameTaken(pkg.name, offered);
601
+ }
602
+ const id = existing?.id ?? randomUUID();
603
+ const version = (existing?.current_version ?? 0) + 1;
604
+ // An org's own version of a copy linked to a platform skill pins the copy to it (ruling P2-4):
605
+ // the org's change takes effect, and shows as individually updated later
606
+ const pin = existing && existing.platform_skill_id !== null && !opts.catalog
607
+ ? { pinned_version: version }
608
+ : {};
609
+ // 来源跟着最新版本走:目录安装记条目与版本,自定义上传清掉(内容已不是目录里的那份)
610
+ const provenance = {
611
+ catalog_item_id: opts.catalog?.itemId ?? null,
612
+ catalog_version: opts.catalog?.version ?? null,
613
+ };
614
+ if (existing) {
615
+ await this.db
616
+ .updateTable("skills")
617
+ .set({
618
+ current_version: version,
619
+ description: pkg.description,
620
+ ...provenance,
621
+ ...pin,
622
+ updated_at: sql `now()`,
623
+ })
624
+ .where("id", "=", id)
625
+ .execute();
626
+ }
627
+ else {
628
+ await this.db
629
+ .insertInto("skills")
371
630
  .values({
372
- skill_id: id,
373
- version,
374
- manifest: JSON.stringify(manifest),
375
- object_prefix: prefix,
631
+ id,
632
+ org_id: orgId,
633
+ scope: "org",
634
+ agent_id: null,
635
+ name: pkg.name,
636
+ description: pkg.description,
637
+ current_version: 1,
376
638
  created_by: actorAccountId,
639
+ ...(opts.shareable !== undefined && { shareable: opts.shareable }),
377
640
  ...provenance,
378
- source_format: opts.catalog?.format ?? "capybara",
379
- suggest_pinned: opts.catalog?.suggestPinned ?? false,
380
641
  })
381
642
  .execute();
382
- await audit(t, {
383
- actorAccountId,
384
- ...(actorTokenId !== undefined && { actorTokenId }),
385
- orgId,
386
- action: existing ? "skill.version_created" : "skill.created",
387
- target: id,
388
- detail: {
389
- name: pkg.name,
390
- version,
391
- files: manifest.files.length,
392
- ...(opts.catalog && { catalog: opts.catalog }),
393
- },
394
- });
395
- const row = await summaryQuery(t).where("s.id", "=", id).executeTakeFirstOrThrow();
396
- return { skill: summary(row), version, created: !existing };
643
+ }
644
+ await this.db
645
+ .insertInto("skill_versions")
646
+ .values({
647
+ skill_id: id,
648
+ version,
649
+ manifest: JSON.stringify(manifest),
650
+ object_prefix: prefix,
651
+ created_by: actorAccountId,
652
+ ...provenance,
653
+ source_format: opts.catalog?.format ?? "capybara",
654
+ suggest_pinned: opts.catalog?.suggestPinned ?? false,
655
+ })
656
+ .execute();
657
+ await audit(this.db.db, {
658
+ actorAccountId,
659
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
660
+ orgId,
661
+ action: existing ? "skill.version_created" : "skill.created",
662
+ target: id,
663
+ detail: {
664
+ name: pkg.name,
665
+ version,
666
+ files: manifest.files.length,
667
+ ...(opts.catalog && { catalog: opts.catalog }),
668
+ ...opts.auditDetail,
669
+ },
397
670
  });
671
+ const row = await summaryQuery(this.db.db).where("s.id", "=", id).executeTakeFirstOrThrow();
672
+ return { skill: summary(row), version, created: !existing };
398
673
  }
399
674
  /**
400
- * 在调用方事务里撤销应用安装给已有技能加的版本(调用方已锁组织行):只有当前版本仍是 `version` 时才退回上一版本并删掉
401
- * 该版本行(之后又有新版本则不动,返回 false),技能的描述与目录来源也退回上一版本的。审计 `skill.version_reverted`。
675
+ * In the caller's transaction (`mandatory`: the caller holds the org row lock), reverts the
676
+ * version a plugin install added to an existing skill: only while `version` is still current,
677
+ * back to the previous version, deleting this version's row (returns false when a newer version
678
+ * exists); the skill's description and catalog source revert too. Audit `skill.version_reverted`.
402
679
  */
403
- async revertVersionIn(t, orgId, skillId, version, actorAccountId, reason) {
404
- const row = await t
680
+ async revertVersionIn(orgId, skillId, version, actorAccountId, reason) {
681
+ const row = await this.db
405
682
  .selectFrom("skills")
406
683
  .select(["current_version", "name"])
407
684
  .where("id", "=", skillId)
@@ -411,13 +688,13 @@ export class SkillsService {
411
688
  .executeTakeFirst();
412
689
  if (!row || row.current_version !== version || version <= 1)
413
690
  return false;
414
- const prev = await t
691
+ const prev = await this.db
415
692
  .selectFrom("skill_versions")
416
693
  .select(["manifest", "catalog_item_id", "catalog_version"])
417
694
  .where("skill_id", "=", skillId)
418
695
  .where("version", "=", version - 1)
419
696
  .executeTakeFirst();
420
- await t
697
+ await this.db
421
698
  .updateTable("skills")
422
699
  .set({
423
700
  current_version: version - 1,
@@ -430,12 +707,12 @@ export class SkillsService {
430
707
  })
431
708
  .where("id", "=", skillId)
432
709
  .execute();
433
- await t
710
+ await this.db
434
711
  .deleteFrom("skill_versions")
435
712
  .where("skill_id", "=", skillId)
436
713
  .where("version", "=", version)
437
714
  .execute();
438
- await audit(t, {
715
+ await audit(this.db.db, {
439
716
  actorAccountId,
440
717
  orgId,
441
718
  action: "skill.version_reverted",
@@ -445,11 +722,12 @@ export class SkillsService {
445
722
  return true;
446
723
  }
447
724
  /**
448
- * 在调用方事务里软删除组织技能(调用方已锁组织行;应用安装的回滚与卸载用)。审计 `skill.deleted`(带 reason)。
449
- * 已删除 / 不存在时返回 false。
725
+ * In the caller's transaction (`mandatory`: the caller holds the org row lock), soft-deletes an
726
+ * org skill (plugin install rollback and uninstall). Audit `skill.deleted` with the reason.
727
+ * Returns false when it is already deleted or missing.
450
728
  */
451
- async softDeleteIn(t, orgId, skillId, actorAccountId, reason) {
452
- const r = await t
729
+ async softDeleteIn(orgId, skillId, actorAccountId, reason) {
730
+ const r = await this.db
453
731
  .updateTable("skills")
454
732
  .set({ deleted_at: sql `now()`, updated_at: sql `now()` })
455
733
  .where("id", "=", skillId)
@@ -460,7 +738,7 @@ export class SkillsService {
460
738
  .executeTakeFirst();
461
739
  if (!r)
462
740
  return false;
463
- await audit(t, {
741
+ await audit(this.db.db, {
464
742
  actorAccountId,
465
743
  orgId,
466
744
  action: "skill.deleted",
@@ -469,19 +747,50 @@ export class SkillsService {
469
747
  });
470
748
  return true;
471
749
  }
472
- /** 组织技能库(`scope=org`、未删除),按名字排序。 */
750
+ /**
751
+ * The org skill library, sorted by name: the org's live `scope=org` skills except copies linked
752
+ * to a platform skill without a pin, and the platform skills on in the org (phase 2,
753
+ * `usableSkills`; `origin` tells them apart), each with the ids of those copies (`linkedIds`).
754
+ */
473
755
  async list(orgId) {
474
- const rows = await summaryQuery(this.d.db)
475
- .where("s.org_id", "=", orgId)
476
- .where("s.scope", "=", "org")
477
- .where("s.deleted_at", "is", null)
478
- .orderBy("s.name")
756
+ const usable = await usableSkills(this.db.db, orgId);
757
+ const orgIds = usable.filter((u) => u.origin === "org").map((u) => u.id);
758
+ const platformIds = usable.filter((u) => u.origin === "platform").map((u) => u.id);
759
+ // the org's own skills it promoted serving a newer platform version (ruling P3-4)
760
+ const promotedTo = new Map(usable.flatMap((u) => u.origin === "org" &&
761
+ u.platformSkillId !== undefined &&
762
+ u.source.startsWith(PLATFORM_SOURCE)
763
+ ? [[u.id, u.platformSkillId]]
764
+ : []));
765
+ const own = orgIds.length === 0
766
+ ? []
767
+ : await Promise.all((await summaryQuery(this.db.db).where("s.id", "in", orgIds).orderBy("s.name").execute()).map((r) => {
768
+ const to = promotedTo.get(r.id);
769
+ return to === undefined ? summary(r) : this.promotedSummary(r.id, to);
770
+ }));
771
+ if (platformIds.length === 0)
772
+ return own;
773
+ const links = await this.db
774
+ .selectFrom("skills")
775
+ .select(["id", "platform_skill_id"])
776
+ .where("org_id", "=", orgId)
777
+ .where("scope", "=", "org")
778
+ .where("deleted_at", "is", null)
779
+ .where("pinned_version", "is", null)
780
+ .where("platform_skill_id", "in", platformIds)
781
+ .orderBy("id")
479
782
  .execute();
480
- return rows.map(summary);
783
+ const linked = new Map();
784
+ for (const l of links) {
785
+ const k = l.platform_skill_id;
786
+ linked.set(k, [...(linked.get(k) ?? []), l.id]);
787
+ }
788
+ const platform = (await platformSummaryQuery(this.db.db).where("p.id", "in", platformIds).execute()).map((r) => ({ ...platformSummary(r), linkedIds: linked.get(r.id) ?? [] }));
789
+ return [...own, ...platform].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : a.id < b.id ? -1 : 1);
481
790
  }
482
791
  /** 对该 agent 自动生效的技能(`scope=agent`、未删除),按名字排序。 */
483
792
  async listForAgent(orgId, agentId) {
484
- const rows = await summaryQuery(this.d.db)
793
+ const rows = await summaryQuery(this.db.db)
485
794
  .where("s.org_id", "=", orgId)
486
795
  .where("s.scope", "=", "agent")
487
796
  .where("s.agent_id", "=", agentId)
@@ -490,17 +799,43 @@ export class SkillsService {
490
799
  .execute();
491
800
  return rows.map(summary);
492
801
  }
493
- /** 组织技能详情:各版本与文件清单。不存在 / 已删除 / 不是组织技能 → `skill.not_found`。 */
802
+ /**
803
+ * 组织技能详情:各版本与文件清单。不存在 / 已删除 / 不是组织技能 → `skill.not_found`。
804
+ * An org copy linked to a platform skill without a pin (ruling B2) serves the platform skill's
805
+ * content under its own id, so its detail is the platform skill's (its id, versions and body;
806
+ * 404 while that skill is off in the org); a pinned copy keeps its own (Task 10).
807
+ */
494
808
  async get(orgId, skillId) {
495
- const row = await summaryQuery(this.d.db)
809
+ const link = await this.db
810
+ .selectFrom("skills")
811
+ .select("platform_skill_id")
812
+ .where("id", "=", skillId)
813
+ .where("org_id", "=", orgId)
814
+ .where("scope", "=", "org")
815
+ .where("deleted_at", "is", null)
816
+ .where("platform_skill_id", "is not", null)
817
+ .where("pinned_version", "is", null)
818
+ .executeTakeFirst();
819
+ if (link?.platform_skill_id) {
820
+ // the org's own skill it promoted is its own (ruling P3-3): its stored version while that is
821
+ // the platform's current one, else the platform's newer version under its id (ruling P3-4)
822
+ const served = (await skillVersionsById(this.db.db, orgId, [skillId])).get(skillId);
823
+ if (served?.origin !== "org")
824
+ return this.getPlatform(orgId, link.platform_skill_id);
825
+ if (served.source.startsWith(PLATFORM_SOURCE)) {
826
+ const detail = await this.getPlatform(orgId, link.platform_skill_id);
827
+ return { ...detail, ...(await this.promotedSummary(skillId, link.platform_skill_id)) };
828
+ }
829
+ }
830
+ const row = await summaryQuery(this.db.db)
496
831
  .where("s.id", "=", skillId)
497
832
  .where("s.org_id", "=", orgId)
498
833
  .where("s.scope", "=", "org")
499
834
  .where("s.deleted_at", "is", null)
500
835
  .executeTakeFirst();
501
836
  if (!row)
502
- throw notFound();
503
- const versions = await this.d.db
837
+ return this.getPlatform(orgId, skillId);
838
+ const versions = await this.db
504
839
  .selectFrom("skill_versions")
505
840
  .select(["version", "manifest", "created_by", "created_at", "object_prefix"])
506
841
  .where("skill_id", "=", skillId)
@@ -519,13 +854,51 @@ export class SkillsService {
519
854
  })),
520
855
  };
521
856
  }
857
+ /**
858
+ * A platform skill's detail (phase 2): only while it is on in the org, else `skill.not_found`.
859
+ * Its versions are the platform skill's.
860
+ */
861
+ async getPlatform(orgId, skillId) {
862
+ const usable = (await skillVersionsById(this.db.db, orgId, [skillId])).get(skillId);
863
+ if (usable?.origin !== "platform" || usable.platformSkillId !== skillId)
864
+ throw notFound();
865
+ const row = await platformSummaryQuery(this.db.db)
866
+ .where("p.id", "=", skillId)
867
+ .executeTakeFirst();
868
+ if (!row)
869
+ throw notFound();
870
+ const versions = await this.db
871
+ .selectFrom("platform_skill_versions")
872
+ .select(["version", "manifest", "created_by", "created_at", "object_prefix"])
873
+ .where("skill_id", "=", skillId)
874
+ .orderBy("version", "desc")
875
+ .execute();
876
+ const current = versions.find((v) => v.version === row.current_version);
877
+ return {
878
+ ...platformSummary(row),
879
+ body: current
880
+ ? await this.readBody(orgId, {
881
+ manifest: current.manifest,
882
+ object_prefix: platformSource(current.object_prefix),
883
+ })
884
+ : null,
885
+ versions: versions.map((v) => ({
886
+ version: v.version,
887
+ description: v.manifest.description,
888
+ files: v.manifest.files,
889
+ createdBy: v.created_by,
890
+ createdAt: v.created_at,
891
+ })),
892
+ };
893
+ }
522
894
  /** 读某版本 SKILL.md 的正文(见 {@link SkillDetail.body});任何读取问题都返回 null,不让详情失败。 */
523
895
  async readBody(orgId, v) {
524
896
  const entry = v.manifest.files.find((f) => f.path === SKILL_ENTRY_FILE);
525
897
  if (!entry || entry.size > SKILL_BODY_MAX_BYTES)
526
898
  return null;
527
899
  try {
528
- const got = await this.d.storage.kernel(orgId).get(`${v.object_prefix}${SKILL_ENTRY_FILE}`);
900
+ const { store, prefix } = skillFileStore(this.storage, orgId, v.object_prefix);
901
+ const got = await store.get(`${prefix}${SKILL_ENTRY_FILE}`);
529
902
  if (!got)
530
903
  return null;
531
904
  const text = new TextDecoder("utf-8", { fatal: true }).decode(await new Response(got.body).arrayBuffer());
@@ -541,27 +914,86 @@ export class SkillsService {
541
914
  * 保存时会被拒绝(运行时由 T14 忽略已删除的技能)。不存在 / 已删除 → `skill.not_found`。
542
915
  */
543
916
  async softDelete(orgId, skillId, actorAccountId, actorTokenId) {
544
- await this.d.db.transaction().execute(async (t) => {
545
- await lockOrgAndAuthorize(t, orgId, actorAccountId, "skills.manage");
546
- const r = await t
547
- .updateTable("skills")
548
- .set({ deleted_at: sql `now()`, updated_at: sql `now()` })
549
- .where("id", "=", skillId)
550
- .where("org_id", "=", orgId)
551
- .where("scope", "=", "org")
552
- .where("deleted_at", "is", null)
553
- .returning(["name"])
554
- .executeTakeFirst();
555
- if (!r)
556
- throw notFound();
557
- await audit(t, {
558
- actorAccountId,
559
- ...(actorTokenId !== undefined && { actorTokenId }),
560
- orgId,
561
- action: "skill.deleted",
562
- target: skillId,
563
- detail: { name: r.name },
564
- });
917
+ await this.softDeleteTx(orgId, skillId, actorAccountId, actorTokenId);
918
+ }
919
+ /** The transaction of {@link softDelete}. */
920
+ async softDeleteTx(orgId, skillId, actorAccountId, actorTokenId) {
921
+ await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "skills.manage");
922
+ await this.deleteOrgSkillIn(orgId, skillId, actorAccountId, actorTokenId);
923
+ }
924
+ /**
925
+ * In the caller's transaction (`mandatory`: the caller holds the org row lock and checked
926
+ * `skills.manage`), soft-deletes an org-scope skill of the org: what {@link softDelete} writes
927
+ * (audit `skill.deleted`); missing or deleted -> `skill.not_found`. The owner delete of a
928
+ * promoted skill (`OwnedItems.deleteSkill`) calls it after its platform row was dealt with.
929
+ */
930
+ async deleteOrgSkillIn(orgId, skillId, actorAccountId, actorTokenId, auditDetail) {
931
+ const r = await this.db
932
+ .updateTable("skills")
933
+ .set({ deleted_at: sql `now()`, updated_at: sql `now()` })
934
+ .where("id", "=", skillId)
935
+ .where("org_id", "=", orgId)
936
+ .where("scope", "=", "org")
937
+ .where("deleted_at", "is", null)
938
+ .returning(["name"])
939
+ .executeTakeFirst();
940
+ if (!r)
941
+ throw notFound();
942
+ await audit(this.db.db, {
943
+ actorAccountId,
944
+ ...(actorTokenId !== undefined && { actorTokenId }),
945
+ orgId,
946
+ action: "skill.deleted",
947
+ target: skillId,
948
+ detail: { name: r.name, ...auditDetail },
565
949
  });
566
950
  }
951
+ };
952
+ __decorate([
953
+ Transactional()
954
+ ], SkillsService.prototype, "createUploadedVersionIn", null);
955
+ __decorate([
956
+ Transactional()
957
+ ], SkillsService.prototype, "createVersionIn", null);
958
+ __decorate([
959
+ Transactional({ propagation: "mandatory" })
960
+ ], SkillsService.prototype, "revertVersionIn", null);
961
+ __decorate([
962
+ Transactional({ propagation: "mandatory" })
963
+ ], SkillsService.prototype, "softDeleteIn", null);
964
+ __decorate([
965
+ Transactional()
966
+ ], SkillsService.prototype, "softDeleteTx", null);
967
+ __decorate([
968
+ Transactional({ propagation: "mandatory" })
969
+ ], SkillsService.prototype, "deleteOrgSkillIn", null);
970
+ SkillsService = __decorate([
971
+ Injectable(),
972
+ __param(0, Inject(KernelDb)),
973
+ __param(1, Inject(StorageService)),
974
+ __param(2, Inject(AttachmentsService)),
975
+ __param(3, Inject(TransactionHost)),
976
+ __param(4, Inject(OrgLock)),
977
+ __param(5, Inject(PlatformComponents))
978
+ ], SkillsService);
979
+ export { SkillsService };
980
+ /**
981
+ * The platform skill the org's live org skill `name` was promoted to (ruling P3-3: linked without
982
+ * a pin to a live platform skill the org owns), else undefined. `id`: only that skill.
983
+ */
984
+ async function promotedSkillNamed(db, orgId, name, id) {
985
+ let q = db
986
+ .selectFrom("skills as s")
987
+ .innerJoin("platform_skills as p", "p.id", "s.platform_skill_id")
988
+ .select("p.id")
989
+ .where("s.org_id", "=", orgId)
990
+ .where("s.scope", "=", "org")
991
+ .where("s.name", "=", name)
992
+ .where("s.deleted_at", "is", null)
993
+ .where("s.pinned_version", "is", null)
994
+ .where("p.owner_org_id", "=", orgId)
995
+ .where("p.deleted_at", "is", null);
996
+ if (id !== undefined)
997
+ q = q.where("s.id", "=", id);
998
+ return (await q.executeTakeFirst())?.id;
567
999
  }