@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.20

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 (1039) hide show
  1. package/bootstrap.json +85 -5
  2. package/dist/admin/admin-agents.controller.d.ts +28 -0
  3. package/dist/admin/admin-agents.controller.js +79 -0
  4. package/dist/admin/admin-connectors.controller.d.ts +29 -0
  5. package/dist/admin/admin-connectors.controller.js +79 -0
  6. package/dist/admin/admin-items.schemas.d.ts +42 -0
  7. package/dist/admin/admin-items.schemas.js +48 -0
  8. package/dist/admin/admin.controller.d.ts +52 -80
  9. package/dist/admin/admin.controller.js +112 -81
  10. package/dist/admin/admin.module.d.ts +4 -1
  11. package/dist/admin/admin.module.js +50 -4
  12. package/dist/admin/admin.schemas.d.ts +69 -0
  13. package/dist/admin/admin.schemas.js +53 -0
  14. package/dist/admin/audit.controller.d.ts +14 -0
  15. package/dist/admin/audit.controller.js +42 -0
  16. package/dist/admin/audit.schemas.d.ts +8 -0
  17. package/dist/admin/audit.schemas.js +17 -0
  18. package/dist/admin/extensions.controller.d.ts +34 -3
  19. package/dist/admin/extensions.controller.js +66 -8
  20. package/dist/admin/extensions.schemas.d.ts +7 -0
  21. package/dist/admin/extensions.schemas.js +10 -0
  22. package/dist/admin/health.service.d.ts +104 -0
  23. package/dist/admin/health.service.js +246 -0
  24. package/dist/admin/limit-defaults.d.ts +20 -0
  25. package/dist/admin/limit-defaults.js +10 -0
  26. package/dist/admin/overview.controller.d.ts +31 -0
  27. package/dist/admin/overview.controller.js +78 -0
  28. package/dist/admin/overview.schemas.d.ts +8 -0
  29. package/dist/admin/overview.schemas.js +13 -0
  30. package/dist/admin/overview.service.d.ts +112 -0
  31. package/dist/admin/overview.service.js +223 -0
  32. package/dist/admin/platform-audit.service.d.ts +41 -0
  33. package/dist/admin/platform-audit.service.js +70 -0
  34. package/dist/admin/setup-lock.d.ts +1 -1
  35. package/dist/admin/setup-lock.js +1 -1
  36. package/dist/admin/setup.controller.d.ts +1 -1
  37. package/dist/admin/setup.controller.js +1 -1
  38. package/dist/admin/setup.service.d.ts +4 -4
  39. package/dist/admin/setup.service.js +8 -8
  40. package/dist/admin/usage.service.d.ts +149 -0
  41. package/dist/admin/usage.service.js +321 -0
  42. package/dist/agents/admin-agents.d.ts +92 -0
  43. package/dist/agents/admin-agents.js +170 -0
  44. package/dist/agents/agent-lookup.d.ts +24 -0
  45. package/dist/agents/agent-lookup.js +46 -2
  46. package/dist/agents/agent-profile.service.d.ts +31 -0
  47. package/dist/agents/agent-profile.service.js +122 -0
  48. package/dist/agents/agents.controller.d.ts +53 -168
  49. package/dist/agents/agents.controller.js +163 -34
  50. package/dist/agents/agents.module.d.ts +6 -2
  51. package/dist/agents/agents.module.js +41 -7
  52. package/dist/agents/agents.schemas.d.ts +392 -0
  53. package/dist/agents/agents.schemas.js +126 -0
  54. package/dist/agents/agents.service.d.ts +121 -36
  55. package/dist/agents/agents.service.js +411 -121
  56. package/dist/agents/definition.d.ts +142 -21
  57. package/dist/agents/definition.js +389 -43
  58. package/dist/agents/from-template.d.ts +106 -0
  59. package/dist/agents/from-template.js +680 -0
  60. package/dist/agents/from-template.service.d.ts +72 -0
  61. package/dist/agents/from-template.service.js +178 -0
  62. package/dist/agents/instruction-files.d.ts +60 -0
  63. package/dist/agents/instruction-files.js +111 -0
  64. package/dist/agents/models.controller.d.ts +44 -6
  65. package/dist/agents/models.controller.js +84 -8
  66. package/dist/agents/org-templates.d.ts +186 -0
  67. package/dist/agents/org-templates.js +876 -0
  68. package/dist/agents/pending-connector-requests.d.ts +79 -0
  69. package/dist/agents/pending-connector-requests.js +215 -0
  70. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  71. package/dist/agents/pending-connectors.controller.js +91 -0
  72. package/dist/agents/pending-connectors.service.d.ts +62 -0
  73. package/dist/agents/pending-connectors.service.js +282 -0
  74. package/dist/agents/profile.d.ts +114 -0
  75. package/dist/agents/profile.js +55 -0
  76. package/dist/agents/readiness.controller.d.ts +26 -0
  77. package/dist/agents/readiness.controller.js +56 -0
  78. package/dist/agents/templates.controller.d.ts +77 -5
  79. package/dist/agents/templates.controller.js +153 -7
  80. package/dist/agents/templates.d.ts +127 -23
  81. package/dist/agents/templates.js +482 -44
  82. package/dist/agents/templates.schemas.d.ts +20 -0
  83. package/dist/agents/templates.schemas.js +45 -0
  84. package/dist/background/background.controller.d.ts +38 -0
  85. package/dist/background/background.controller.js +88 -0
  86. package/dist/background/background.module.d.ts +10 -0
  87. package/dist/background/background.module.js +39 -0
  88. package/dist/background/background.schemas.d.ts +10 -0
  89. package/dist/background/background.schemas.js +16 -0
  90. package/dist/background/finish.d.ts +44 -0
  91. package/dist/background/finish.js +95 -0
  92. package/dist/background/launch-lock.d.ts +15 -0
  93. package/dist/background/launch-lock.js +40 -0
  94. package/dist/background/launch.d.ts +42 -0
  95. package/dist/background/launch.js +77 -0
  96. package/dist/background/poll.job.d.ts +56 -0
  97. package/dist/background/poll.job.js +195 -0
  98. package/dist/background/render.d.ts +23 -0
  99. package/dist/background/render.js +48 -0
  100. package/dist/background/session.d.ts +48 -0
  101. package/dist/background/session.js +80 -0
  102. package/dist/background/status.d.ts +35 -0
  103. package/dist/background/status.js +57 -0
  104. package/dist/background/stop.d.ts +68 -0
  105. package/dist/background/stop.js +244 -0
  106. package/dist/background/store.d.ts +167 -0
  107. package/dist/background/store.js +361 -0
  108. package/dist/background/store.module.d.ts +6 -0
  109. package/dist/background/store.module.js +22 -0
  110. package/dist/background/tasks.service.d.ts +109 -0
  111. package/dist/background/tasks.service.js +271 -0
  112. package/dist/background/wake-rules.d.ts +66 -0
  113. package/dist/background/wake-rules.js +113 -0
  114. package/dist/background/wake.d.ts +30 -0
  115. package/dist/background/wake.js +63 -0
  116. package/dist/catalog/admin-catalog.controller.d.ts +136 -52
  117. package/dist/catalog/admin-catalog.controller.js +275 -65
  118. package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
  119. package/dist/catalog/admin-catalog.schemas.js +99 -0
  120. package/dist/catalog/appearance.schemas.d.ts +10 -0
  121. package/dist/catalog/appearance.schemas.js +20 -0
  122. package/dist/catalog/appearance.service.d.ts +105 -0
  123. package/dist/catalog/appearance.service.js +306 -0
  124. package/dist/catalog/catalog-content.d.ts +122 -35
  125. package/dist/catalog/catalog-content.js +122 -14
  126. package/dist/catalog/catalog-files.d.ts +42 -0
  127. package/dist/catalog/catalog-files.js +89 -0
  128. package/dist/catalog/catalog-import.module.d.ts +7 -0
  129. package/dist/catalog/catalog-import.module.js +63 -0
  130. package/dist/catalog/catalog-items.d.ts +122 -7
  131. package/dist/catalog/catalog-items.js +301 -13
  132. package/dist/catalog/catalog-scope.service.d.ts +293 -0
  133. package/dist/catalog/catalog-scope.service.js +1236 -0
  134. package/dist/catalog/catalog.module.d.ts +7 -9
  135. package/dist/catalog/catalog.module.js +47 -31
  136. package/dist/catalog/catalog.service.d.ts +122 -31
  137. package/dist/catalog/catalog.service.js +177 -105
  138. package/dist/catalog/claude/agents.js +15 -10
  139. package/dist/catalog/claude/translate.js +3 -0
  140. package/dist/catalog/cli.d.ts +11 -1
  141. package/dist/catalog/cli.js +29 -1
  142. package/dist/catalog/component-promotion.d.ts +96 -0
  143. package/dist/catalog/component-promotion.js +395 -0
  144. package/dist/catalog/component-scope.controller.d.ts +102 -0
  145. package/dist/catalog/component-scope.controller.js +257 -0
  146. package/dist/catalog/component-scope.schemas.d.ts +118 -0
  147. package/dist/catalog/component-scope.schemas.js +97 -0
  148. package/dist/catalog/component-scope.service.d.ts +394 -0
  149. package/dist/catalog/component-scope.service.js +1133 -0
  150. package/dist/catalog/component-state.d.ts +207 -0
  151. package/dist/catalog/component-state.js +484 -0
  152. package/dist/catalog/git-source.d.ts +9 -1
  153. package/dist/catalog/git-source.js +29 -2
  154. package/dist/catalog/job-ids.d.ts +30 -0
  155. package/dist/catalog/job-ids.js +25 -0
  156. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  157. package/dist/catalog/marketplace-icons.d.ts +64 -0
  158. package/dist/catalog/marketplace-icons.js +131 -0
  159. package/dist/catalog/marketplaces.controller.d.ts +50 -41
  160. package/dist/catalog/marketplaces.controller.js +130 -46
  161. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  162. package/dist/catalog/marketplaces.schemas.js +53 -0
  163. package/dist/catalog/marketplaces.service.d.ts +110 -17
  164. package/dist/catalog/marketplaces.service.js +337 -29
  165. package/dist/catalog/org-catalog.controller.d.ts +114 -62
  166. package/dist/catalog/org-catalog.controller.js +191 -98
  167. package/dist/catalog/org-catalog.schemas.d.ts +104 -0
  168. package/dist/catalog/org-catalog.schemas.js +107 -0
  169. package/dist/catalog/org-catalog.service.d.ts +72 -33
  170. package/dist/catalog/org-catalog.service.js +367 -158
  171. package/dist/catalog/org-extension-switch.d.ts +41 -0
  172. package/dist/catalog/org-extension-switch.js +115 -0
  173. package/dist/catalog/org-extension.controller.d.ts +133 -0
  174. package/dist/catalog/org-extension.controller.js +313 -0
  175. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  176. package/dist/catalog/org-extension.schemas.js +22 -0
  177. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  178. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  179. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  180. package/dist/catalog/org-plugin-uploads.js +122 -0
  181. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  182. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  183. package/dist/catalog/owned-items.d.ts +188 -0
  184. package/dist/catalog/owned-items.js +808 -0
  185. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  186. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  187. package/dist/catalog/ownership.d.ts +172 -0
  188. package/dist/catalog/ownership.js +326 -0
  189. package/dist/catalog/platform-components.d.ts +243 -0
  190. package/dist/catalog/platform-components.js +872 -0
  191. package/dist/catalog/platform-migration.d.ts +115 -0
  192. package/dist/catalog/platform-migration.js +583 -0
  193. package/dist/catalog/plugin-import.d.ts +254 -47
  194. package/dist/catalog/plugin-import.js +810 -112
  195. package/dist/catalog/plugin-install.d.ts +205 -42
  196. package/dist/catalog/plugin-install.js +828 -126
  197. package/dist/catalog/plugin-package.d.ts +43 -4
  198. package/dist/catalog/plugin-package.js +194 -7
  199. package/dist/catalog/plugin-upgrade.d.ts +308 -225
  200. package/dist/catalog/plugin-upgrade.js +1325 -1131
  201. package/dist/catalog/request-rules.d.ts +65 -0
  202. package/dist/catalog/request-rules.js +217 -0
  203. package/dist/catalog/requests.service.d.ts +194 -118
  204. package/dist/catalog/requests.service.js +530 -343
  205. package/dist/catalog/reserved-names.d.ts +8 -0
  206. package/dist/catalog/reserved-names.js +42 -0
  207. package/dist/catalog/scope-orgs.d.ts +21 -0
  208. package/dist/catalog/scope-orgs.js +67 -0
  209. package/dist/catalog/scope-state.d.ts +35 -0
  210. package/dist/catalog/scope-state.js +87 -0
  211. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  212. package/dist/catalog/scope-sync-workers.js +29 -0
  213. package/dist/catalog/scope-sync.d.ts +176 -0
  214. package/dist/catalog/scope-sync.js +576 -0
  215. package/dist/catalog/scope.d.ts +42 -0
  216. package/dist/catalog/scope.js +42 -0
  217. package/dist/catalog/unshare.d.ts +22 -0
  218. package/dist/catalog/unshare.js +119 -0
  219. package/dist/channels/actions.js +10 -3
  220. package/dist/channels/cards.d.ts +36 -10
  221. package/dist/channels/cards.js +100 -25
  222. package/dist/channels/channels.module.js +13 -2
  223. package/dist/channels/channels.schemas.d.ts +41 -0
  224. package/dist/channels/channels.schemas.js +40 -0
  225. package/dist/channels/connections.controller.d.ts +46 -37
  226. package/dist/channels/connections.controller.js +76 -34
  227. package/dist/channels/connections.service.d.ts +102 -10
  228. package/dist/channels/connections.service.js +271 -24
  229. package/dist/channels/inbound.d.ts +11 -1
  230. package/dist/channels/inbound.js +87 -7
  231. package/dist/channels/outbound.d.ts +14 -1
  232. package/dist/channels/outbound.js +64 -15
  233. package/dist/channels/phrases.d.ts +33 -2
  234. package/dist/channels/phrases.js +29 -1
  235. package/dist/channels/supervisor.d.ts +2 -0
  236. package/dist/channels/supervisor.js +4 -0
  237. package/dist/channels/threads.d.ts +5 -0
  238. package/dist/channels/threads.js +8 -0
  239. package/dist/channels/webhook.d.ts +21 -1
  240. package/dist/channels/webhook.js +39 -4
  241. package/dist/client/client-access.service.d.ts +102 -0
  242. package/dist/client/client-access.service.js +303 -0
  243. package/dist/client/client-builds.service.d.ts +109 -0
  244. package/dist/client/client-builds.service.js +229 -0
  245. package/dist/client/client-delivery.controller.d.ts +25 -0
  246. package/dist/client/client-delivery.controller.js +66 -0
  247. package/dist/client/client-files.d.ts +48 -0
  248. package/dist/client/client-files.js +136 -0
  249. package/dist/client/client-reports.cron.d.ts +13 -0
  250. package/dist/client/client-reports.cron.js +42 -0
  251. package/dist/client/client-reports.service.d.ts +30 -0
  252. package/dist/client/client-reports.service.js +102 -0
  253. package/dist/client/client-sign-in.service.d.ts +21 -0
  254. package/dist/client/client-sign-in.service.js +49 -0
  255. package/dist/client/client.controller.d.ts +49 -0
  256. package/dist/client/client.controller.js +129 -0
  257. package/dist/client/client.module.d.ts +8 -0
  258. package/dist/client/client.module.js +28 -0
  259. package/dist/client/client.schemas.d.ts +61 -0
  260. package/dist/client/client.schemas.js +27 -0
  261. package/dist/config/docs.js +5 -1
  262. package/dist/config/schema.d.ts +35 -2
  263. package/dist/config/schema.js +216 -21
  264. package/dist/conversations/access.d.ts +6 -4
  265. package/dist/conversations/access.js +29 -5
  266. package/dist/conversations/agent-tree.d.ts +46 -0
  267. package/dist/conversations/agent-tree.js +92 -0
  268. package/dist/conversations/artifacts.d.ts +1 -1
  269. package/dist/conversations/artifacts.js +1 -1
  270. package/dist/conversations/attachments.service.d.ts +30 -0
  271. package/dist/conversations/attachments.service.js +130 -5
  272. package/dist/conversations/conversations.controller.d.ts +79 -44
  273. package/dist/conversations/conversations.controller.js +133 -82
  274. package/dist/conversations/conversations.module.d.ts +1 -1
  275. package/dist/conversations/conversations.module.js +10 -7
  276. package/dist/conversations/conversations.schemas.d.ts +52 -0
  277. package/dist/conversations/conversations.schemas.js +79 -0
  278. package/dist/conversations/conversations.service.d.ts +161 -13
  279. package/dist/conversations/conversations.service.js +329 -57
  280. package/dist/conversations/device-status.d.ts +24 -0
  281. package/dist/conversations/device-status.js +71 -0
  282. package/dist/conversations/event-log.d.ts +45 -9
  283. package/dist/conversations/event-log.js +113 -6
  284. package/dist/conversations/events.d.ts +255 -9
  285. package/dist/conversations/events.js +250 -34
  286. package/dist/conversations/message-context.d.ts +79 -0
  287. package/dist/conversations/message-context.js +145 -0
  288. package/dist/conversations/queue.d.ts +5 -2
  289. package/dist/conversations/queue.js +24 -4
  290. package/dist/conversations/queue.service.d.ts +2 -2
  291. package/dist/conversations/queue.service.js +21 -3
  292. package/dist/conversations/titles.d.ts +12 -3
  293. package/dist/conversations/titles.js +40 -16
  294. package/dist/conversations/tree.d.ts +17 -0
  295. package/dist/conversations/tree.js +42 -0
  296. package/dist/ctx/create-ctx.d.ts +48 -5
  297. package/dist/ctx/create-ctx.js +174 -34
  298. package/dist/db/kernel-schema.d.ts +668 -27
  299. package/dist/db/pool.d.ts +5 -0
  300. package/dist/db/pool.js +3 -0
  301. package/dist/devices/access.d.ts +66 -0
  302. package/dist/devices/access.js +113 -0
  303. package/dist/devices/conversation-devices.d.ts +75 -0
  304. package/dist/devices/conversation-devices.js +230 -0
  305. package/dist/devices/devices.controller.d.ts +36 -0
  306. package/dist/devices/devices.controller.js +124 -0
  307. package/dist/devices/devices.module.d.ts +8 -0
  308. package/dist/devices/devices.module.js +34 -0
  309. package/dist/devices/devices.schemas.d.ts +3 -0
  310. package/dist/devices/devices.schemas.js +14 -0
  311. package/dist/devices/devices.service.d.ts +251 -0
  312. package/dist/devices/devices.service.js +791 -0
  313. package/dist/devices/dto.d.ts +25 -0
  314. package/dist/devices/dto.js +12 -0
  315. package/dist/devices/label.d.ts +11 -0
  316. package/dist/devices/label.js +25 -0
  317. package/dist/devices/legacy-cleanup.job.d.ts +34 -0
  318. package/dist/devices/legacy-cleanup.job.js +141 -0
  319. package/dist/errors.d.ts +215 -3
  320. package/dist/errors.js +215 -3
  321. package/dist/evals/evals.module.js +11 -2
  322. package/dist/evals/evals.schemas.d.ts +110 -0
  323. package/dist/evals/evals.schemas.js +107 -0
  324. package/dist/evals/reconstruct.d.ts +18 -9
  325. package/dist/evals/reconstruct.js +36 -10
  326. package/dist/evals/recorded-tools.d.ts +37 -1
  327. package/dist/evals/recorded-tools.js +120 -10
  328. package/dist/evals/run-replay.d.ts +20 -3
  329. package/dist/evals/run-replay.js +78 -14
  330. package/dist/evals/runs.controller.d.ts +2 -57
  331. package/dist/evals/runs.controller.js +1 -42
  332. package/dist/evals/runs.service.d.ts +8 -7
  333. package/dist/evals/runs.service.js +45 -30
  334. package/dist/evals/sets.controller.d.ts +2 -28
  335. package/dist/evals/sets.controller.js +1 -31
  336. package/dist/evals/sets.service.d.ts +7 -7
  337. package/dist/evals/sets.service.js +23 -17
  338. package/dist/evals/snapshot.d.ts +3 -2
  339. package/dist/evals/snapshot.js +17 -4
  340. package/dist/evals/step-replay.d.ts +4 -6
  341. package/dist/evals/step-replay.js +16 -9
  342. package/dist/evals/trajectory.d.ts +5 -3
  343. package/dist/evals/trajectory.js +4 -1
  344. package/dist/evals/trajectory.service.d.ts +8 -3
  345. package/dist/evals/trajectory.service.js +26 -14
  346. package/dist/evals/worker.d.ts +5 -5
  347. package/dist/evals/worker.js +9 -3
  348. package/dist/extensions/admin-ops.d.ts +81 -14
  349. package/dist/extensions/admin-ops.js +181 -47
  350. package/dist/extensions/admin-view.d.ts +57 -10
  351. package/dist/extensions/admin-view.js +249 -27
  352. package/dist/extensions/approvals.d.ts +12 -2
  353. package/dist/extensions/blobs.d.ts +14 -1
  354. package/dist/extensions/blobs.js +49 -5
  355. package/dist/extensions/bootstrap.d.ts +41 -5
  356. package/dist/extensions/bootstrap.js +121 -19
  357. package/dist/extensions/cli.d.ts +12 -0
  358. package/dist/extensions/cli.js +11 -2
  359. package/dist/extensions/config-hash.d.ts +10 -0
  360. package/dist/extensions/config-hash.js +38 -0
  361. package/dist/extensions/config-issues.d.ts +13 -1
  362. package/dist/extensions/config-issues.js +22 -5
  363. package/dist/extensions/config-json-schema.d.ts +43 -7
  364. package/dist/extensions/config-json-schema.js +124 -58
  365. package/dist/extensions/deployment-config-store.d.ts +6 -0
  366. package/dist/extensions/deployment-config.d.ts +94 -9
  367. package/dist/extensions/deployment-config.js +255 -34
  368. package/dist/extensions/display-name.d.ts +22 -0
  369. package/dist/extensions/display-name.js +77 -0
  370. package/dist/extensions/effective-config.d.ts +133 -0
  371. package/dist/extensions/effective-config.js +379 -0
  372. package/dist/extensions/extensions.module.js +31 -12
  373. package/dist/extensions/guide-places.d.ts +68 -0
  374. package/dist/extensions/guide-places.js +152 -0
  375. package/dist/extensions/hooks.d.ts +37 -4
  376. package/dist/extensions/hooks.js +82 -16
  377. package/dist/extensions/host.d.ts +105 -12
  378. package/dist/extensions/host.js +372 -87
  379. package/dist/extensions/installs.d.ts +30 -9
  380. package/dist/extensions/installs.js +57 -16
  381. package/dist/extensions/instance.d.ts +17 -2
  382. package/dist/extensions/instance.js +21 -0
  383. package/dist/extensions/ledger.d.ts +1 -1
  384. package/dist/extensions/locks.d.ts +12 -0
  385. package/dist/extensions/locks.js +26 -0
  386. package/dist/extensions/org-config.d.ts +97 -7
  387. package/dist/extensions/org-config.js +215 -45
  388. package/dist/extensions/org-levels.d.ts +37 -0
  389. package/dist/extensions/org-levels.js +71 -0
  390. package/dist/extensions/org-overrides.d.ts +151 -0
  391. package/dist/extensions/org-overrides.js +524 -0
  392. package/dist/extensions/package.d.ts +18 -4
  393. package/dist/extensions/package.js +56 -3
  394. package/dist/extensions/permission-set.d.ts +35 -5
  395. package/dist/extensions/permission-set.js +36 -5
  396. package/dist/extensions/permission-view.d.ts +106 -13
  397. package/dist/extensions/permission-view.js +33 -15
  398. package/dist/extensions/plugin-guides.d.ts +282 -0
  399. package/dist/extensions/plugin-guides.js +554 -0
  400. package/dist/extensions/plugin-icons.d.ts +54 -0
  401. package/dist/extensions/plugin-icons.js +125 -0
  402. package/dist/extensions/plugin-items.d.ts +21 -0
  403. package/dist/extensions/plugin-items.js +42 -0
  404. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  405. package/dist/extensions/point-defaults.controller.js +69 -0
  406. package/dist/extensions/point-defaults.d.ts +73 -0
  407. package/dist/extensions/point-defaults.js +236 -0
  408. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  409. package/dist/extensions/point-defaults.schemas.js +14 -0
  410. package/dist/extensions/registry.d.ts +1 -1
  411. package/dist/extensions/registry.js +2 -0
  412. package/dist/extensions/resolve.d.ts +51 -1
  413. package/dist/extensions/resolve.js +85 -3
  414. package/dist/extensions/single-provider.d.ts +92 -0
  415. package/dist/extensions/single-provider.js +180 -0
  416. package/dist/extensions/sources.d.ts +13 -2
  417. package/dist/extensions/sources.js +2 -0
  418. package/dist/extensions/state.module.d.ts +9 -0
  419. package/dist/extensions/state.module.js +46 -0
  420. package/dist/extensions/unavailable.d.ts +50 -0
  421. package/dist/extensions/unavailable.js +115 -0
  422. package/dist/files/previewers.controller.js +2 -3
  423. package/dist/files/previewers.d.ts +10 -3
  424. package/dist/files/previewers.js +40 -11
  425. package/dist/files/previewers.schemas.d.ts +10 -0
  426. package/dist/files/previewers.schemas.js +9 -0
  427. package/dist/http/api.module.js +76 -4
  428. package/dist/http/app.d.ts +11 -2
  429. package/dist/http/app.js +31 -5
  430. package/dist/http/gateway-routes.d.ts +7 -3
  431. package/dist/http/gateway-routes.js +6 -3
  432. package/dist/http/nest-logger.d.ts +6 -5
  433. package/dist/http/nest-logger.js +24 -10
  434. package/dist/http/plugin-dispatch.d.ts +4 -1
  435. package/dist/http/plugin-dispatch.js +14 -2
  436. package/dist/identity/accounts.d.ts +77 -31
  437. package/dist/identity/accounts.js +133 -52
  438. package/dist/identity/audit.d.ts +2 -1
  439. package/dist/identity/auth.controller.js +9 -5
  440. package/dist/identity/auth.guard.d.ts +13 -5
  441. package/dist/identity/auth.guard.js +35 -9
  442. package/dist/identity/cookies.d.ts +26 -5
  443. package/dist/identity/cookies.js +58 -6
  444. package/dist/identity/identity.module.d.ts +1 -1
  445. package/dist/identity/identity.module.js +7 -4
  446. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  447. package/dist/identity/initial-passwords.controller.js +49 -0
  448. package/dist/identity/initial-passwords.d.ts +61 -0
  449. package/dist/identity/initial-passwords.job.d.ts +16 -0
  450. package/dist/identity/initial-passwords.job.js +46 -0
  451. package/dist/identity/initial-passwords.js +159 -0
  452. package/dist/identity/me.controller.d.ts +17 -1
  453. package/dist/identity/me.controller.js +45 -4
  454. package/dist/identity/me.schemas.d.ts +24 -0
  455. package/dist/identity/me.schemas.js +25 -0
  456. package/dist/identity/principal.d.ts +11 -3
  457. package/dist/identity/principal.js +11 -3
  458. package/dist/identity/sessions.d.ts +12 -0
  459. package/dist/identity/sessions.js +45 -0
  460. package/dist/identity/settings.d.ts +99 -12
  461. package/dist/identity/settings.js +234 -25
  462. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  463. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  464. package/dist/identity/write-actor.d.ts +11 -0
  465. package/dist/identity/write-actor.js +7 -0
  466. package/dist/inbox/inbox.module.d.ts +4 -1
  467. package/dist/inbox/inbox.module.js +7 -3
  468. package/dist/inbox/inbox.schemas.d.ts +8 -0
  469. package/dist/inbox/inbox.schemas.js +11 -0
  470. package/dist/inbox/inbox.service.d.ts +64 -4
  471. package/dist/inbox/inbox.service.js +74 -4
  472. package/dist/inbox/org-notices.d.ts +63 -0
  473. package/dist/inbox/org-notices.js +91 -0
  474. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  475. package/dist/inbox/platform-inbox.controller.js +58 -0
  476. package/dist/inbox/platform-inbox.service.d.ts +157 -0
  477. package/dist/inbox/platform-inbox.service.js +281 -0
  478. package/dist/inbox/platform-notices.d.ts +19 -0
  479. package/dist/inbox/platform-notices.js +9 -0
  480. package/dist/index.d.ts +6 -2
  481. package/dist/index.js +7 -1
  482. package/dist/infra/cli/kernel-cli.module.js +9 -1
  483. package/dist/infra/config/kernel-config.service.js +32 -1
  484. package/dist/infra/database/database.module.js +1 -0
  485. package/dist/infra/database/xact-lock.d.ts +1 -1
  486. package/dist/infra/database/xact-lock.js +1 -1
  487. package/dist/infra/events/kernel-events.d.ts +31 -3
  488. package/dist/infra/lifecycle/process-guards.js +4 -0
  489. package/dist/infra/lock/lock.service.d.ts +8 -0
  490. package/dist/infra/lock/lock.service.js +27 -0
  491. package/dist/infra/logging/logging.module.d.ts +4 -2
  492. package/dist/infra/logging/logging.module.js +24 -6
  493. package/dist/infra/presence/presence.module.d.ts +6 -0
  494. package/dist/infra/presence/presence.module.js +22 -0
  495. package/dist/infra/presence/replica-presence.d.ts +87 -0
  496. package/dist/infra/presence/replica-presence.js +189 -0
  497. package/dist/infra/queue/add-job-once.d.ts +14 -0
  498. package/dist/infra/queue/add-job-once.js +16 -0
  499. package/dist/infra/queue/redis-connection.d.ts +6 -0
  500. package/dist/infra/queue/redis-connection.js +7 -0
  501. package/dist/infra/redis/redis.module.js +6 -2
  502. package/dist/infra/throttler/named-throttlers.d.ts +12 -0
  503. package/dist/infra/throttler/named-throttlers.js +67 -0
  504. package/dist/infra/throttler/throttler.guard.js +1 -1
  505. package/dist/infra/tokens.d.ts +6 -1
  506. package/dist/infra/tokens.js +6 -1
  507. package/dist/kernel.module.js +15 -0
  508. package/dist/lifecycle/kernel-lifecycle.d.ts +4 -2
  509. package/dist/lifecycle/kernel-lifecycle.js +35 -7
  510. package/dist/local-devices/device-auth.controller.d.ts +42 -0
  511. package/dist/local-devices/device-auth.controller.js +116 -0
  512. package/dist/local-devices/device-auth.d.ts +119 -0
  513. package/dist/local-devices/device-auth.js +401 -0
  514. package/dist/local-devices/device-auth.module.d.ts +7 -0
  515. package/dist/local-devices/device-auth.module.js +25 -0
  516. package/dist/local-devices/device-routes.d.ts +36 -0
  517. package/dist/local-devices/device-routes.js +90 -0
  518. package/dist/local-devices/dto.d.ts +66 -0
  519. package/dist/local-devices/dto.js +44 -0
  520. package/dist/local-devices/keys.d.ts +25 -0
  521. package/dist/local-devices/keys.js +25 -0
  522. package/dist/local-devices/local-device-gateway.d.ts +134 -0
  523. package/dist/local-devices/local-device-gateway.js +542 -0
  524. package/dist/local-devices/local-device-provider.d.ts +89 -0
  525. package/dist/local-devices/local-device-provider.js +151 -0
  526. package/dist/local-devices/local-devices.module.d.ts +16 -0
  527. package/dist/local-devices/local-devices.module.js +44 -0
  528. package/dist/local-devices/machines.d.ts +118 -0
  529. package/dist/local-devices/machines.js +366 -0
  530. package/dist/local-devices/relay.d.ts +100 -0
  531. package/dist/local-devices/relay.js +373 -0
  532. package/dist/local-devices/targets.d.ts +28 -0
  533. package/dist/local-devices/targets.js +73 -0
  534. package/dist/log.d.ts +13 -1
  535. package/dist/log.js +93 -17
  536. package/dist/models/embeddings.d.ts +82 -0
  537. package/dist/models/embeddings.js +326 -0
  538. package/dist/models/enablement.controller.d.ts +40 -0
  539. package/dist/models/enablement.controller.js +74 -0
  540. package/dist/models/enablement.d.ts +101 -0
  541. package/dist/models/enablement.js +264 -0
  542. package/dist/models/models.module.d.ts +5 -1
  543. package/dist/models/models.module.js +16 -4
  544. package/dist/models/org-models.schemas.d.ts +8 -0
  545. package/dist/models/org-models.schemas.js +22 -0
  546. package/dist/models/prices.d.ts +8 -6
  547. package/dist/models/prices.js +11 -9
  548. package/dist/models/purposes.controller.d.ts +6 -4
  549. package/dist/models/purposes.controller.js +13 -7
  550. package/dist/models/purposes.d.ts +72 -14
  551. package/dist/models/purposes.js +115 -34
  552. package/dist/orgs/directory-sync.d.ts +14 -5
  553. package/dist/orgs/directory-sync.js +41 -17
  554. package/dist/orgs/offboarding.d.ts +12 -8
  555. package/dist/orgs/offboarding.js +54 -33
  556. package/dist/orgs/org-lock.d.ts +5 -0
  557. package/dist/orgs/org-lock.js +13 -0
  558. package/dist/orgs/org.guard.d.ts +10 -0
  559. package/dist/orgs/org.guard.js +43 -32
  560. package/dist/orgs/orgs.controller.d.ts +2 -5
  561. package/dist/orgs/orgs.controller.js +3 -6
  562. package/dist/orgs/orgs.module.js +3 -0
  563. package/dist/orgs/orgs.schemas.d.ts +8 -0
  564. package/dist/orgs/orgs.schemas.js +16 -0
  565. package/dist/orgs/orgs.service.d.ts +23 -8
  566. package/dist/orgs/orgs.service.js +38 -16
  567. package/dist/orgs/roles.d.ts +1 -1
  568. package/dist/orgs/roles.js +5 -1
  569. package/dist/orgs/settings.controller.d.ts +1 -1
  570. package/dist/orgs/settings.service.d.ts +66 -6
  571. package/dist/orgs/settings.service.js +89 -10
  572. package/dist/overrides.d.ts +16 -1
  573. package/dist/overrides.js +10 -0
  574. package/dist/platform/actor.d.ts +48 -0
  575. package/dist/platform/actor.js +100 -0
  576. package/dist/platform/agent-docs.d.ts +18 -0
  577. package/dist/platform/agent-docs.js +59 -0
  578. package/dist/platform/availability.d.ts +14 -0
  579. package/dist/platform/availability.js +43 -0
  580. package/dist/platform/errors.d.ts +28 -0
  581. package/dist/platform/errors.js +65 -0
  582. package/dist/platform/exclusions.d.ts +11 -0
  583. package/dist/platform/exclusions.js +774 -0
  584. package/dist/platform/method.d.ts +6 -0
  585. package/dist/platform/method.js +15 -0
  586. package/dist/platform/operation.d.ts +169 -0
  587. package/dist/platform/operation.js +102 -0
  588. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  589. package/dist/platform/ops/accounts.ops.js +291 -0
  590. package/dist/platform/ops/admin-items.ops.d.ts +37 -0
  591. package/dist/platform/ops/admin-items.ops.js +278 -0
  592. package/dist/platform/ops/admin.ops.d.ts +38 -0
  593. package/dist/platform/ops/admin.ops.js +497 -0
  594. package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
  595. package/dist/platform/ops/agent-skills.ops.js +509 -0
  596. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  597. package/dist/platform/ops/agent-templates.ops.js +272 -0
  598. package/dist/platform/ops/agents.ops.d.ts +37 -0
  599. package/dist/platform/ops/agents.ops.js +730 -0
  600. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  601. package/dist/platform/ops/approvals.ops.js +116 -0
  602. package/dist/platform/ops/background.ops.d.ts +14 -0
  603. package/dist/platform/ops/background.ops.js +134 -0
  604. package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
  605. package/dist/platform/ops/catalog-admin.ops.js +682 -0
  606. package/dist/platform/ops/channels.ops.d.ts +16 -0
  607. package/dist/platform/ops/channels.ops.js +195 -0
  608. package/dist/platform/ops/components.ops.d.ts +46 -0
  609. package/dist/platform/ops/components.ops.js +854 -0
  610. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  611. package/dist/platform/ops/connectors.ops.js +190 -0
  612. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  613. package/dist/platform/ops/conversations.ops.js +470 -0
  614. package/dist/platform/ops/devices.ops.d.ts +26 -0
  615. package/dist/platform/ops/devices.ops.js +311 -0
  616. package/dist/platform/ops/errors.d.ts +16 -0
  617. package/dist/platform/ops/errors.js +30 -0
  618. package/dist/platform/ops/evals.ops.d.ts +28 -0
  619. package/dist/platform/ops/evals.ops.js +783 -0
  620. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  621. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  622. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  623. package/dist/platform/ops/extensions.ops.js +347 -0
  624. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  625. package/dist/platform/ops/inbox.ops.js +381 -0
  626. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  627. package/dist/platform/ops/marketplaces.ops.js +466 -0
  628. package/dist/platform/ops/models.ops.d.ts +25 -0
  629. package/dist/platform/ops/models.ops.js +232 -0
  630. package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
  631. package/dist/platform/ops/org-plugins.ops.js +388 -0
  632. package/dist/platform/ops/org-settings.ops.d.ts +18 -0
  633. package/dist/platform/ops/org-settings.ops.js +127 -0
  634. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  635. package/dist/platform/ops/orgs.ops.js +298 -0
  636. package/dist/platform/ops/other-orgs.d.ts +20 -0
  637. package/dist/platform/ops/other-orgs.js +72 -0
  638. package/dist/platform/ops/paging.d.ts +14 -0
  639. package/dist/platform/ops/paging.js +20 -0
  640. package/dist/platform/ops/platform.ops.d.ts +30 -0
  641. package/dist/platform/ops/platform.ops.js +231 -0
  642. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  643. package/dist/platform/ops/plugins.ops.js +476 -0
  644. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  645. package/dist/platform/ops/previewers.ops.js +109 -0
  646. package/dist/platform/ops/requests.ops.d.ts +14 -0
  647. package/dist/platform/ops/requests.ops.js +191 -0
  648. package/dist/platform/ops/role.d.ts +4 -0
  649. package/dist/platform/ops/role.js +10 -0
  650. package/dist/platform/ops/setup.ops.d.ts +24 -0
  651. package/dist/platform/ops/setup.ops.js +212 -0
  652. package/dist/platform/ops/skills.ops.d.ts +17 -0
  653. package/dist/platform/ops/skills.ops.js +160 -0
  654. package/dist/platform/ops/summary.d.ts +10 -0
  655. package/dist/platform/ops/summary.js +18 -0
  656. package/dist/platform/ops/themes.ops.d.ts +14 -0
  657. package/dist/platform/ops/themes.ops.js +47 -0
  658. package/dist/platform/ops/ui.ops.d.ts +8 -0
  659. package/dist/platform/ops/ui.ops.js +41 -0
  660. package/dist/platform/ops/unavailable.d.ts +23 -0
  661. package/dist/platform/ops/unavailable.js +118 -0
  662. package/dist/platform/parity.d.ts +33 -0
  663. package/dist/platform/parity.js +272 -0
  664. package/dist/platform/platform-ops.module.d.ts +43 -0
  665. package/dist/platform/platform-ops.module.js +142 -0
  666. package/dist/platform/platform.module.d.ts +8 -0
  667. package/dist/platform/platform.module.js +25 -0
  668. package/dist/platform/registry.d.ts +30 -0
  669. package/dist/platform/registry.js +111 -0
  670. package/dist/platform/route-schemas.d.ts +18 -0
  671. package/dist/platform/route-schemas.js +85 -0
  672. package/dist/roles/gateway-role.d.ts +18 -3
  673. package/dist/roles/gateway-role.js +33 -5
  674. package/dist/roles/gateway.module.d.ts +2 -1
  675. package/dist/roles/gateway.module.js +6 -3
  676. package/dist/roles/worker-role.d.ts +6 -4
  677. package/dist/roles/worker-role.js +14 -7
  678. package/dist/roles/worker.module.d.ts +1 -1
  679. package/dist/roles/worker.module.js +21 -1
  680. package/dist/runtime/context/build.d.ts +21 -13
  681. package/dist/runtime/context/build.js +106 -29
  682. package/dist/runtime/context/claude-tools.d.ts +4 -1
  683. package/dist/runtime/context/claude-tools.js +13 -12
  684. package/dist/runtime/context/compaction.js +24 -1
  685. package/dist/runtime/context/device-paths.d.ts +40 -0
  686. package/dist/runtime/context/device-paths.js +48 -0
  687. package/dist/runtime/context/legacy-text.d.ts +22 -0
  688. package/dist/runtime/context/legacy-text.js +37 -0
  689. package/dist/runtime/context/reminders.d.ts +2 -0
  690. package/dist/runtime/context/reminders.js +2 -0
  691. package/dist/runtime/context/run-context.d.ts +65 -0
  692. package/dist/runtime/context/run-context.js +215 -0
  693. package/dist/runtime/context/skills.d.ts +29 -11
  694. package/dist/runtime/context/skills.js +46 -32
  695. package/dist/runtime/context/tool-changes.d.ts +27 -0
  696. package/dist/runtime/context/tool-changes.js +60 -0
  697. package/dist/runtime/hook-calls.d.ts +8 -1
  698. package/dist/runtime/hook-calls.js +40 -7
  699. package/dist/runtime/langgraph-loop.d.ts +3 -1
  700. package/dist/runtime/langgraph-loop.js +36 -17
  701. package/dist/runtime/loop.d.ts +35 -6
  702. package/dist/runtime/maintenance.d.ts +9 -4
  703. package/dist/runtime/maintenance.js +35 -8
  704. package/dist/runtime/model-call.d.ts +54 -11
  705. package/dist/runtime/model-call.js +105 -28
  706. package/dist/runtime/providers.d.ts +149 -29
  707. package/dist/runtime/providers.js +332 -63
  708. package/dist/runtime/run-context.service.d.ts +65 -0
  709. package/dist/runtime/run-context.service.js +236 -0
  710. package/dist/runtime/run-control.d.ts +11 -1
  711. package/dist/runtime/run-control.js +12 -0
  712. package/dist/runtime/run-drafts.d.ts +85 -0
  713. package/dist/runtime/run-drafts.js +230 -0
  714. package/dist/runtime/run-finish.d.ts +1 -1
  715. package/dist/runtime/run-jobs.d.ts +3 -5
  716. package/dist/runtime/run-jobs.js +7 -9
  717. package/dist/runtime/run-queue.d.ts +62 -5
  718. package/dist/runtime/run-queue.js +313 -40
  719. package/dist/runtime/run-worker.d.ts +19 -8
  720. package/dist/runtime/run-worker.js +105 -44
  721. package/dist/runtime/runtime.module.js +13 -3
  722. package/dist/runtime/step-log.d.ts +15 -4
  723. package/dist/runtime/step-log.js +24 -7
  724. package/dist/runtime/stream.controller.d.ts +23 -1
  725. package/dist/runtime/stream.controller.js +60 -3
  726. package/dist/runtime/stream.d.ts +4 -1
  727. package/dist/runtime/stream.js +27 -3
  728. package/dist/runtime/subagents/child.d.ts +55 -7
  729. package/dist/runtime/subagents/child.js +105 -7
  730. package/dist/runtime/subagents/definition.d.ts +31 -26
  731. package/dist/runtime/subagents/definition.js +89 -142
  732. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  733. package/dist/runtime/subagents/deliveries.js +228 -0
  734. package/dist/runtime/subagents/dispatch.d.ts +116 -27
  735. package/dist/runtime/subagents/dispatch.js +213 -142
  736. package/dist/runtime/subagents/limits.d.ts +24 -5
  737. package/dist/runtime/subagents/limits.js +40 -6
  738. package/dist/runtime/subagents/messages.d.ts +95 -0
  739. package/dist/runtime/subagents/messages.js +328 -0
  740. package/dist/runtime/subagents/org-agents.js +2 -1
  741. package/dist/runtime/subagents/preamble.d.ts +4 -4
  742. package/dist/runtime/subagents/preamble.js +9 -7
  743. package/dist/runtime/subagents/progress.d.ts +8 -6
  744. package/dist/runtime/subagents/progress.js +11 -6
  745. package/dist/runtime/subagents/render.d.ts +30 -0
  746. package/dist/runtime/subagents/render.js +53 -0
  747. package/dist/runtime/subagents/roster.d.ts +25 -8
  748. package/dist/runtime/subagents/roster.js +48 -12
  749. package/dist/runtime/subagents/skill-fork.d.ts +4 -3
  750. package/dist/runtime/subagents/skill-fork.js +9 -5
  751. package/dist/runtime/subagents/status.d.ts +14 -0
  752. package/dist/runtime/subagents/status.js +23 -0
  753. package/dist/runtime/subagents/subagents.service.d.ts +9 -6
  754. package/dist/runtime/subagents/subagents.service.js +13 -8
  755. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  756. package/dist/runtime/usage-report-jobs.js +158 -0
  757. package/dist/runtime/usage-report.d.ts +35 -39
  758. package/dist/runtime/usage-report.js +171 -97
  759. package/dist/runtime/waits.d.ts +148 -39
  760. package/dist/runtime/waits.js +426 -112
  761. package/dist/sandbox/jobs.d.ts +40 -13
  762. package/dist/sandbox/jobs.js +57 -20
  763. package/dist/sandbox/leases.d.ts +37 -54
  764. package/dist/sandbox/leases.js +71 -115
  765. package/dist/sandbox/providers.d.ts +34 -7
  766. package/dist/sandbox/providers.js +54 -9
  767. package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
  768. package/dist/sandbox/sandbox-file-reader.js +98 -0
  769. package/dist/sandbox/sandbox.module.d.ts +3 -2
  770. package/dist/sandbox/sandbox.module.js +10 -4
  771. package/dist/sandbox/sandbox.service.d.ts +345 -132
  772. package/dist/sandbox/sandbox.service.js +883 -399
  773. package/dist/sandbox/unreachable.d.ts +30 -0
  774. package/dist/sandbox/unreachable.js +108 -0
  775. package/dist/setup/kernel-checks.d.ts +91 -0
  776. package/dist/setup/kernel-checks.js +295 -0
  777. package/dist/setup/oauth-token-probe.d.ts +47 -0
  778. package/dist/setup/oauth-token-probe.js +108 -0
  779. package/dist/setup/redact-check.d.ts +18 -0
  780. package/dist/setup/redact-check.js +46 -0
  781. package/dist/setup/setup-check-registry.d.ts +86 -0
  782. package/dist/setup/setup-check-registry.js +75 -0
  783. package/dist/setup/setup-checks.controller.d.ts +28 -0
  784. package/dist/setup/setup-checks.controller.js +78 -0
  785. package/dist/setup/setup-checks.schemas.d.ts +38 -0
  786. package/dist/setup/setup-checks.schemas.js +43 -0
  787. package/dist/setup/setup-checks.service.d.ts +144 -0
  788. package/dist/setup/setup-checks.service.js +683 -0
  789. package/dist/setup/setup-guides.controller.d.ts +18 -0
  790. package/dist/setup/setup-guides.controller.js +48 -0
  791. package/dist/setup/setup-guides.schemas.d.ts +10 -0
  792. package/dist/setup/setup-guides.schemas.js +6 -0
  793. package/dist/setup/setup-guides.service.d.ts +126 -0
  794. package/dist/setup/setup-guides.service.js +315 -0
  795. package/dist/setup/setup.module.d.ts +8 -0
  796. package/dist/setup/setup.module.js +31 -0
  797. package/dist/skills/agent-skills.controller.d.ts +48 -0
  798. package/dist/skills/agent-skills.controller.js +131 -0
  799. package/dist/skills/agent-skills.service.d.ts +262 -0
  800. package/dist/skills/agent-skills.service.js +996 -0
  801. package/dist/skills/catalog.d.ts +14 -11
  802. package/dist/skills/catalog.js +32 -50
  803. package/dist/skills/changes.controller.d.ts +12 -22
  804. package/dist/skills/changes.controller.js +27 -56
  805. package/dist/skills/changes.service.d.ts +69 -115
  806. package/dist/skills/changes.service.js +249 -598
  807. package/dist/skills/conversation-catalog.d.ts +53 -0
  808. package/dist/skills/conversation-catalog.js +149 -0
  809. package/dist/skills/invocable.controller.d.ts +1 -1
  810. package/dist/skills/invocable.controller.js +2 -2
  811. package/dist/skills/invocation-keys.d.ts +1 -1
  812. package/dist/skills/invocation-keys.js +1 -1
  813. package/dist/skills/invoke.d.ts +3 -3
  814. package/dist/skills/invoke.js +21 -8
  815. package/dist/skills/package.d.ts +15 -1
  816. package/dist/skills/package.js +14 -1
  817. package/dist/skills/skills.controller.d.ts +32 -6
  818. package/dist/skills/skills.controller.js +64 -11
  819. package/dist/skills/skills.module.js +25 -3
  820. package/dist/skills/skills.schemas.d.ts +44 -0
  821. package/dist/skills/skills.schemas.js +68 -0
  822. package/dist/skills/skills.service.d.ts +123 -26
  823. package/dist/skills/skills.service.js +493 -76
  824. package/dist/skills/usable.d.ts +82 -0
  825. package/dist/skills/usable.js +388 -0
  826. package/dist/themes/render-css.d.ts +13 -0
  827. package/dist/themes/render-css.js +135 -0
  828. package/dist/themes/theme-delivery.service.d.ts +36 -0
  829. package/dist/themes/theme-delivery.service.js +116 -0
  830. package/dist/themes/theme-state.d.ts +116 -0
  831. package/dist/themes/theme-state.js +221 -0
  832. package/dist/themes/theme-usage.d.ts +61 -0
  833. package/dist/themes/theme-usage.js +98 -0
  834. package/dist/themes/themes-public.controller.d.ts +33 -0
  835. package/dist/themes/themes-public.controller.js +98 -0
  836. package/dist/themes/themes.controller.d.ts +13 -0
  837. package/dist/themes/themes.controller.js +38 -0
  838. package/dist/themes/themes.module.d.ts +3 -0
  839. package/dist/themes/themes.module.js +21 -0
  840. package/dist/themes/themes.schemas.d.ts +3 -0
  841. package/dist/themes/themes.schemas.js +2 -0
  842. package/dist/themes/themes.service.d.ts +50 -0
  843. package/dist/themes/themes.service.js +99 -0
  844. package/dist/time-zone.d.ts +5 -0
  845. package/dist/time-zone.js +19 -0
  846. package/dist/tools/admin-connectors.d.ts +69 -0
  847. package/dist/tools/admin-connectors.js +135 -0
  848. package/dist/tools/approvals.controller.js +2 -3
  849. package/dist/tools/approvals.schemas.d.ts +21 -0
  850. package/dist/tools/approvals.schemas.js +15 -0
  851. package/dist/tools/approvals.service.d.ts +26 -2
  852. package/dist/tools/approvals.service.js +44 -5
  853. package/dist/tools/builtin-names.d.ts +104 -0
  854. package/dist/tools/builtin-names.js +164 -0
  855. package/dist/tools/builtins/agent.d.ts +27 -25
  856. package/dist/tools/builtins/agent.js +66 -63
  857. package/dist/tools/builtins/ask-user.d.ts +1 -1
  858. package/dist/tools/builtins/ask-user.js +5 -4
  859. package/dist/tools/builtins/builtin-tools.d.ts +23 -4
  860. package/dist/tools/builtins/builtin-tools.js +78 -12
  861. package/dist/tools/builtins/current-time.d.ts +26 -0
  862. package/dist/tools/builtins/current-time.js +99 -0
  863. package/dist/tools/builtins/handback.d.ts +28 -0
  864. package/dist/tools/builtins/handback.js +53 -0
  865. package/dist/tools/builtins/platform.d.ts +51 -0
  866. package/dist/tools/builtins/platform.js +451 -0
  867. package/dist/tools/builtins/read-tool-output.d.ts +1 -1
  868. package/dist/tools/builtins/read-tool-output.js +2 -2
  869. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  870. package/dist/tools/builtins/sandbox/bash.js +291 -39
  871. package/dist/tools/builtins/sandbox/common.d.ts +135 -36
  872. package/dist/tools/builtins/sandbox/common.js +222 -62
  873. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  874. package/dist/tools/builtins/sandbox/deliver.js +19 -16
  875. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  876. package/dist/tools/builtins/sandbox/edit.js +64 -50
  877. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  878. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  879. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  880. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  881. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  882. package/dist/tools/builtins/sandbox/glob.js +17 -12
  883. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  884. package/dist/tools/builtins/sandbox/grep.js +153 -34
  885. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  886. package/dist/tools/builtins/sandbox/index.js +13 -5
  887. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  888. package/dist/tools/builtins/sandbox/read.js +29 -19
  889. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  890. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  891. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  892. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  893. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  894. package/dist/tools/builtins/sandbox/write.js +51 -44
  895. package/dist/tools/builtins/send-message.d.ts +56 -0
  896. package/dist/tools/builtins/send-message.js +100 -0
  897. package/dist/tools/builtins/skill-load.d.ts +29 -18
  898. package/dist/tools/builtins/skill-load.js +125 -73
  899. package/dist/tools/builtins/tool-search.d.ts +13 -9
  900. package/dist/tools/builtins/tool-search.js +25 -14
  901. package/dist/tools/builtins/web/errors.d.ts +8 -0
  902. package/dist/tools/builtins/web/errors.js +53 -0
  903. package/dist/tools/builtins/web/extract.d.ts +62 -0
  904. package/dist/tools/builtins/web/extract.js +271 -0
  905. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  906. package/dist/tools/builtins/web/fetch.js +175 -0
  907. package/dist/tools/builtins/web/index.d.ts +13 -0
  908. package/dist/tools/builtins/web/index.js +12 -0
  909. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  910. package/dist/tools/builtins/web/page-cache.js +77 -0
  911. package/dist/tools/builtins/web/search.d.ts +25 -0
  912. package/dist/tools/builtins/web/search.js +210 -0
  913. package/dist/tools/builtins/web/url.d.ts +17 -0
  914. package/dist/tools/builtins/web/url.js +43 -0
  915. package/dist/tools/connector-account-policies.d.ts +51 -0
  916. package/dist/tools/connector-account-policies.js +165 -0
  917. package/dist/tools/connectors.controller.d.ts +74 -9
  918. package/dist/tools/connectors.controller.js +133 -16
  919. package/dist/tools/connectors.schemas.d.ts +27 -0
  920. package/dist/tools/connectors.schemas.js +34 -0
  921. package/dist/tools/connectors.service.d.ts +101 -8
  922. package/dist/tools/connectors.service.js +266 -28
  923. package/dist/tools/credentials.d.ts +23 -0
  924. package/dist/tools/credentials.js +90 -1
  925. package/dist/tools/display-names.d.ts +9 -0
  926. package/dist/tools/display-names.js +24 -0
  927. package/dist/tools/drift.js +5 -5
  928. package/dist/tools/elicitation.js +1 -1
  929. package/dist/tools/extension-tools.controller.d.ts +14 -0
  930. package/dist/tools/extension-tools.controller.js +37 -0
  931. package/dist/tools/info.d.ts +61 -4
  932. package/dist/tools/info.js +119 -33
  933. package/dist/tools/legacy-data.d.ts +34 -0
  934. package/dist/tools/legacy-data.js +76 -0
  935. package/dist/tools/legacy-keys.d.ts +51 -0
  936. package/dist/tools/legacy-keys.js +114 -0
  937. package/dist/tools/naming.d.ts +1 -5
  938. package/dist/tools/naming.js +1 -7
  939. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  940. package/dist/tools/oauth/flow-paths.js +1 -1
  941. package/dist/tools/oauth/flow.js +1 -1
  942. package/dist/tools/oauth/tokens.d.ts +54 -7
  943. package/dist/tools/oauth/tokens.js +87 -17
  944. package/dist/tools/org-tool-switches.d.ts +89 -0
  945. package/dist/tools/org-tool-switches.js +201 -0
  946. package/dist/tools/outputs.js +1 -1
  947. package/dist/tools/pipeline.d.ts +67 -47
  948. package/dist/tools/pipeline.js +319 -380
  949. package/dist/tools/policy.d.ts +30 -23
  950. package/dist/tools/policy.js +142 -64
  951. package/dist/tools/questions.controller.d.ts +1 -1
  952. package/dist/tools/questions.controller.js +1 -1
  953. package/dist/tools/questions.service.d.ts +23 -2
  954. package/dist/tools/questions.service.js +104 -2
  955. package/dist/tools/registry.d.ts +189 -68
  956. package/dist/tools/registry.js +318 -236
  957. package/dist/tools/resources.d.ts +1 -1
  958. package/dist/tools/resources.js +1 -1
  959. package/dist/tools/tools.module.js +31 -3
  960. package/dist/tools/validate.js +1 -1
  961. package/dist/ui/admin-ui.controller.d.ts +56 -0
  962. package/dist/ui/admin-ui.controller.js +192 -0
  963. package/dist/ui/arrangement.d.ts +65 -0
  964. package/dist/ui/arrangement.js +171 -0
  965. package/dist/ui/embed-token.d.ts +2 -2
  966. package/dist/ui/embed-token.js +30 -5
  967. package/dist/ui/registry.d.ts +42 -17
  968. package/dist/ui/registry.js +46 -14
  969. package/dist/ui/slots.controller.d.ts +11 -0
  970. package/dist/ui/slots.controller.js +25 -0
  971. package/dist/ui/ui-stream.d.ts +20 -3
  972. package/dist/ui/ui-stream.js +25 -7
  973. package/dist/ui/ui.schemas.d.ts +70 -0
  974. package/dist/ui/ui.schemas.js +65 -0
  975. package/dist/ui/views.controller.d.ts +35 -49
  976. package/dist/ui/views.controller.js +48 -70
  977. package/dist/ui/views.d.ts +112 -18
  978. package/dist/ui/views.js +254 -47
  979. package/package.json +6 -3
  980. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  981. package/src/migrations/0064_account_last_org.sql +7 -0
  982. package/src/migrations/0065_conversation_archive.sql +8 -0
  983. package/src/migrations/0066_extension_display_name.sql +4 -0
  984. package/src/migrations/0067_agent_profiles.sql +20 -0
  985. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  986. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  987. package/src/migrations/0070_background_tasks.sql +37 -0
  988. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  989. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  990. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  991. package/src/migrations/0074_subagent_tree.sql +50 -0
  992. package/src/migrations/0075_plugin_scope.sql +61 -0
  993. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  994. package/src/migrations/0077_scope_requests.sql +52 -0
  995. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  996. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  997. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  998. package/src/migrations/0081_platform_components.sql +129 -0
  999. package/src/migrations/0082_platform_migration.sql +33 -0
  1000. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1001. package/src/migrations/0084_org_owned_items.sql +85 -0
  1002. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1003. package/src/migrations/0086_org_layering.sql +30 -0
  1004. package/src/migrations/0087_approval_summary.sql +6 -0
  1005. package/src/migrations/0088_environments.sql +80 -0
  1006. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1007. package/src/migrations/0090_initial_passwords.sql +27 -0
  1008. package/src/migrations/0091_account_time_zone.sql +4 -0
  1009. package/src/migrations/0092_tools_default_on.sql +27 -0
  1010. package/src/migrations/0093_connected_environments.sql +37 -0
  1011. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1012. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1013. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1014. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1015. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1016. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1017. package/src/migrations/0100_catalog_files.sql +13 -0
  1018. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1019. package/src/migrations/0102_themes.sql +64 -0
  1020. package/src/migrations/0103_ui_theme_setting.sql +7 -0
  1021. package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
  1022. package/src/migrations/0105_devices_rename.sql +136 -0
  1023. package/src/migrations/0106_setup_guides_v2.sql +10 -0
  1024. package/src/migrations/0107_extension_client_builds.sql +50 -0
  1025. package/src/migrations/0108_question_skipped.sql +6 -0
  1026. package/src/migrations/0109_audit_platform_idx.sql +5 -0
  1027. package/src/migrations/0110_usage_time_idx.sql +8 -0
  1028. package/src/migrations/0111_agent_skill_sharing.sql +22 -0
  1029. package/src/migrations/0112_skill_share_requests.sql +4 -0
  1030. package/dist/catalog/upgrade-targets.d.ts +0 -56
  1031. package/dist/catalog/upgrade-targets.js +0 -90
  1032. package/dist/conversations/sandbox-status.d.ts +0 -24
  1033. package/dist/conversations/sandbox-status.js +0 -52
  1034. package/dist/extensions/org-config.controller.d.ts +0 -24
  1035. package/dist/extensions/org-config.controller.js +0 -62
  1036. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1037. package/dist/tools/builtins/sandbox/names.js +0 -20
  1038. package/dist/tools/builtins/skill-write.d.ts +0 -59
  1039. package/dist/tools/builtins/skill-write.js +0 -244
@@ -0,0 +1,145 @@
1
+ import { sql } from "kysely";
2
+ import { readOrgSettings } from "../orgs/settings.service.js";
3
+ import { sanitizeSenderName } from "../runtime/context/run-context.js";
4
+ import { isTimeZone } from "../time-zone.js";
5
+ /** The name of an anonymous IM guest whose IM profile gives none. */
6
+ export const ANONYMOUS_SENDER_NAME = "Anonymous guest";
7
+ /**
8
+ * An IM sender's language tag as a run-context language: `zh` and `zh-*` / `zh_*` (any case) are
9
+ * Chinese, any other non-empty tag English; not a string or blank: undefined.
10
+ */
11
+ export function imLocale(tag) {
12
+ if (typeof tag !== "string")
13
+ return undefined;
14
+ const t = tag.trim().toLowerCase();
15
+ if (t === "" || t.length > 64)
16
+ return undefined;
17
+ return t === "zh" || t.startsWith("zh-") || t.startsWith("zh_") ? "zh" : "en";
18
+ }
19
+ /**
20
+ * The time zone and language an inbound channel event's sender carries (values from an extension,
21
+ * so checked here): a time zone the runtime knows, the language normalized by {@link imLocale}.
22
+ */
23
+ export function imSenderContext(sender) {
24
+ const tz = sender.timeZone;
25
+ const locale = imLocale(sender.locale);
26
+ return {
27
+ ...(typeof tz === "string" && isTimeZone(tz) && { timeZone: tz }),
28
+ ...(locale !== undefined && { locale }),
29
+ };
30
+ }
31
+ /** How many of the person's latest web conversations {@link latestWebLocale} looks at. */
32
+ export const WEB_LOCALE_CONVERSATIONS = 20;
33
+ /**
34
+ * The UI language of the person's most recent web message in the org (run context spec §3.4):
35
+ * the latest `user_message` they wrote in each of their {@link WEB_LOCALE_CONVERSATIONS} most
36
+ * recently updated chat conversations that are not IM threads, the newest one with a recorded
37
+ * `locale`. Bounded and index-friendly: `conversations_account_idx`, then one backwards primary-key
38
+ * walk per conversation that stops at its latest user message. Undefined when none.
39
+ */
40
+ export async function latestWebLocale(t, orgId, accountId) {
41
+ const r = await sql `
42
+ SELECT m.locale FROM (
43
+ SELECT c.id FROM capybara.conversations c
44
+ WHERE c.org_id = ${orgId} AND c.account_id = ${accountId} AND c.kind = 'chat'
45
+ AND c.deleted_at IS NULL
46
+ AND NOT EXISTS (SELECT 1 FROM capybara.channel_threads th WHERE th.conversation_id = c.id)
47
+ ORDER BY c.updated_at DESC
48
+ LIMIT ${WEB_LOCALE_CONVERSATIONS}
49
+ ) c
50
+ CROSS JOIN LATERAL (
51
+ SELECT e.payload->>'locale' AS locale, e.created_at FROM capybara.conversation_events e
52
+ WHERE e.conversation_id = c.id AND e.type = 'user_message'
53
+ AND e.payload->>'authorAccountId' = ${accountId}
54
+ ORDER BY e.seq DESC
55
+ LIMIT 1
56
+ ) m
57
+ WHERE m.locale IN ('zh', 'en')
58
+ ORDER BY m.created_at DESC
59
+ LIMIT 1`.execute(t);
60
+ const locale = r.rows[0]?.locale;
61
+ return locale === "zh" || locale === "en" ? locale : undefined;
62
+ }
63
+ /**
64
+ * The language of kernel-generated IM text for one person (run context spec §3.4, maintainer
65
+ * decision 2026-11-08: in IM, language is per person): `im` (what the IM platform gave for the
66
+ * sender, already normalized by {@link imLocale}), else the UI language of the person's most recent
67
+ * web message in the org ({@link latestWebLocale}; no account, e.g. a speaker not resolved yet or
68
+ * the shared anonymous guest: skipped), else the org's `locale`. Read from PG on every call: no
69
+ * cache, so every replica answers the same.
70
+ */
71
+ export async function recipientLocale(t, input) {
72
+ if (input.im !== undefined)
73
+ return input.im;
74
+ if (input.accountId) {
75
+ const web = await latestWebLocale(t, input.orgId, input.accountId);
76
+ if (web !== undefined)
77
+ return web;
78
+ }
79
+ return (await readOrgSettings(t, input.orgId)).locale;
80
+ }
81
+ /**
82
+ * Who wrote a message and in which time zone and language (run context spec §3.2, §3.4), read in
83
+ * the message's transaction (`t`):
84
+ * - `sender`: the account's display name and org role at send time; the org's anonymous guest
85
+ * account (`org_anonymous_accounts`) is `{ name: <senderName, else "Anonymous guest">, role:
86
+ * "guest", anonymous: true }`. Names are sanitised; an empty one leaves `sender` out.
87
+ * - `timeZone`: what the IM platform gave for the sender (`im`, when valid), else the account's
88
+ * setting, else the browser's (when valid), else the org default, else UTC. The anonymous guest
89
+ * account has no setting of its own, so it gets the IM value or the org default.
90
+ * - `locale`: the IM platform's value, else the browser's UI language, else the UI language of the
91
+ * person's most recent web message in the org ({@link latestWebLocale}; not for the shared
92
+ * anonymous guest account), else the org's `locale`.
93
+ *
94
+ * The values used are recorded on the message, so the run context is derived from the log.
95
+ */
96
+ export async function readMessageContext(t, input) {
97
+ const row = await t
98
+ .selectFrom("accounts")
99
+ .leftJoin("memberships", (j) => j
100
+ .onRef("memberships.account_id", "=", "accounts.id")
101
+ .on("memberships.org_id", "=", input.orgId))
102
+ .leftJoin("org_anonymous_accounts as anon", (j) => j.onRef("anon.account_id", "=", "accounts.id").on("anon.org_id", "=", input.orgId))
103
+ .select([
104
+ "accounts.display_name",
105
+ "accounts.time_zone",
106
+ "memberships.role",
107
+ "anon.account_id as anonymous",
108
+ ])
109
+ .where("accounts.id", "=", input.accountId)
110
+ .executeTakeFirst();
111
+ const org = await readOrgSettings(t, input.orgId);
112
+ const anonymous = row?.anonymous !== null && row?.anonymous !== undefined;
113
+ let sender;
114
+ if (row !== undefined) {
115
+ const name = anonymous
116
+ ? sanitizeSenderName(input.senderName ?? "") || ANONYMOUS_SENDER_NAME
117
+ : sanitizeSenderName(row.display_name);
118
+ if (name !== "") {
119
+ sender = anonymous
120
+ ? { name, role: "guest", anonymous: true }
121
+ : { name, ...(row.role !== null && { role: row.role }) };
122
+ }
123
+ }
124
+ const im = input.im?.timeZone;
125
+ const own = row?.time_zone ?? null;
126
+ const browser = input.browser?.timeZone;
127
+ const timeZone = im !== undefined && isTimeZone(im)
128
+ ? im
129
+ : own !== null && isTimeZone(own)
130
+ ? own
131
+ : browser !== undefined && isTimeZone(browser)
132
+ ? browser
133
+ : (org.timeZone ?? "UTC");
134
+ const locale = input.im?.locale ??
135
+ input.browser?.locale ??
136
+ (row !== undefined && !anonymous
137
+ ? await latestWebLocale(t, input.orgId, input.accountId)
138
+ : undefined) ??
139
+ org.locale;
140
+ return {
141
+ ...(sender !== undefined && { sender }),
142
+ timeZone,
143
+ locale,
144
+ };
145
+ }
@@ -5,6 +5,7 @@ import { type InvocationRecord, type RenderedInvocation } from "../skills/invoke
5
5
  import type { AttachmentRef } from "./conversations.service.js";
6
6
  import { type AppendEvent, type EventLog } from "./event-log.js";
7
7
  import type { ConversationEvent, LogContentBlock } from "./events.js";
8
+ import { type MessageContext } from "./message-context.js";
8
9
  /**
9
10
  * Queued messages (UI refresh B, spec §5.7): messages a person queued while a run was going. They
10
11
  * are conversation state in PG, not events: the model has not seen them, so they enter the log only
@@ -113,7 +114,7 @@ export declare function storedSkill(invokedAs: string, invoked: RenderedInvocati
113
114
  first: LogContentBlock;
114
115
  };
115
116
  /** The `user_message` a queued item becomes, as `postUserMessage` would have written it. */
116
- export declare function queuedUserMessage(r: QueueRow): AppendEvent;
117
+ export declare function queuedUserMessage(r: QueueRow, context?: MessageContext): AppendEvent;
117
118
  /**
118
119
  * Appends a queued item inside `t` (the caller holds the conversation row lock): its pick, re-planned
119
120
  * against the selection in effect now, becomes a `model_switched` before the `user_message`, as a
@@ -125,6 +126,7 @@ export declare function queuedUserMessage(r: QueueRow): AppendEvent;
125
126
  export declare function appendQueuedIn(t: KernelTrx, eventLog: Pick<EventLog, "appendIn">, conversationId: string, r: QueueRow): Promise<{
126
127
  event: ConversationEvent;
127
128
  switched: boolean;
129
+ unarchived: boolean;
128
130
  }>;
129
131
  /**
130
132
  * Why a queued item's skill can no longer be invoked, or null (also null for a plain message).
@@ -145,11 +147,12 @@ export declare const queueFull: () => ApiError;
145
147
  * when the queue is empty. An item whose message is already in the log (a retried enqueue after it
146
148
  * was sent) is dropped and the next one is taken. A head item whose skill can no longer be invoked
147
149
  * stays queued and the queue pauses (`skill_not_invocable`): `{ paused }`. The caller notifies
148
- * after commit.
150
+ * after commit (and publishes `archived` when the send unarchived the conversation).
149
151
  */
150
152
  export declare function dispatchQueuedIn(t: KernelTrx, eventLog: Pick<EventLog, "appendIn">, conversationId: string): Promise<{
151
153
  event: ConversationEvent;
152
154
  switched: boolean;
155
+ unarchived: boolean;
153
156
  } | {
154
157
  paused: QueuePauseReason;
155
158
  } | null>;
@@ -4,6 +4,7 @@ import { ApiError } from "../errors.js";
4
4
  import { recordedSkillBlocked, } from "../skills/invoke.js";
5
5
  import { payloadJson } from "./event-log.js";
6
6
  import { userMessageIdemKey } from "./idem-keys.js";
7
+ import { readMessageContext } from "./message-context.js";
7
8
  import { planSelection, readSelection } from "./selection.js";
8
9
  /**
9
10
  * Queued messages (UI refresh B, spec §5.7): messages a person queued while a run was going. They
@@ -77,7 +78,7 @@ export function storedSkill(invokedAs, invoked) {
77
78
  return { skill: payloadJson(skill), first: { type: "text", text: invoked.text } };
78
79
  }
79
80
  /** The `user_message` a queued item becomes, as `postUserMessage` would have written it. */
80
- export function queuedUserMessage(r) {
81
+ export function queuedUserMessage(r, context = {}) {
81
82
  const attachments = r.attachments;
82
83
  const skill = r.skill;
83
84
  return {
@@ -91,6 +92,7 @@ export function queuedUserMessage(r) {
91
92
  ],
92
93
  ...(attachments.length > 0 && { attachments }),
93
94
  authorAccountId: r.account_id,
95
+ ...context,
94
96
  clientMessageId: r.client_message_id,
95
97
  ...(skill !== null && { skill: skill.record }),
96
98
  },
@@ -120,7 +122,14 @@ export async function appendQueuedIn(t, eventLog, conversationId, r) {
120
122
  payload: { ...next, byAccountId: r.account_id, reason: "user" },
121
123
  });
122
124
  }
123
- events.push(queuedUserMessage(r));
125
+ // run context spec §3.4: no browser values were stored with a leftover row
126
+ const org = await t
127
+ .selectFrom("conversations")
128
+ .select("org_id")
129
+ .where("id", "=", conversationId)
130
+ .executeTakeFirstOrThrow();
131
+ const context = await readMessageContext(t, { orgId: org.org_id, accountId: r.account_id });
132
+ events.push(queuedUserMessage(r, context));
124
133
  const written = await eventLog.appendIn(conversationId, events);
125
134
  if (next !== null) {
126
135
  await t
@@ -129,7 +138,18 @@ export async function appendQueuedIn(t, eventLog, conversationId, r) {
129
138
  .where("id", "=", conversationId)
130
139
  .execute();
131
140
  }
132
- return { event: written.at(-1), switched: next !== null };
141
+ // As a direct send: the message brings an archived conversation back into the default lists
142
+ const unarchived = await t
143
+ .updateTable("conversations")
144
+ .set({ archived_at: null })
145
+ .where("id", "=", conversationId)
146
+ .where("archived_at", "is not", null)
147
+ .executeTakeFirst();
148
+ return {
149
+ event: written.at(-1),
150
+ switched: next !== null,
151
+ unarchived: Number(unarchived.numUpdatedRows) > 0,
152
+ };
133
153
  }
134
154
  /** The model of the conversation agent's current version (inside `t`). */
135
155
  async function agentModel(t, conversationId) {
@@ -206,7 +226,7 @@ export const queueFull = () => new ApiError("conversation.queue_full", `A conver
206
226
  * when the queue is empty. An item whose message is already in the log (a retried enqueue after it
207
227
  * was sent) is dropped and the next one is taken. A head item whose skill can no longer be invoked
208
228
  * stays queued and the queue pauses (`skill_not_invocable`): `{ paused }`. The caller notifies
209
- * after commit.
229
+ * after commit (and publishes `archived` when the send unarchived the conversation).
210
230
  */
211
231
  export async function dispatchQueuedIn(t, eventLog, conversationId) {
212
232
  for (;;) {
@@ -15,9 +15,9 @@ export declare class ConversationQueue {
15
15
  /** Starts the conversation's next run (`ensureRun`). */
16
16
  private readonly runs;
17
17
  readonly txHost: TransactionHost;
18
- constructor(db: KernelDb, eventLog: Pick<EventLog, "appendIn" | "notify" | "publishChanged" | "findByIdem">, conversations: Pick<ConversationsService, "get" | "writable" | "resolveExtra" | "bindIn" | "checkPick" | "prepareQueuedSkill">,
18
+ constructor(db: KernelDb, eventLog: Pick<EventLog, "appendIn" | "notify" | "publishChanged" | "findByIdem">, conversations: Pick<ConversationsService, "get" | "writable" | "resolveExtra" | "bindIn" | "checkPick" | "prepareQueuedSkill" | "skipQuestionsIn" | "announceSkipped">,
19
19
  /** Starts the conversation's next run (`ensureRun`). */
20
- runs: Pick<RunControl, "ensureRun">, txHost: TransactionHost);
20
+ runs: Pick<RunControl, "ensureRun" | "wakeHeldTree">, txHost: TransactionHost);
21
21
  list(orgId: string, conversationId: string, accountId: string): Promise<{
22
22
  items: QueueItem[];
23
23
  paused: boolean;
@@ -218,6 +218,8 @@ let ConversationQueue = class ConversationQueue {
218
218
  await this.conversations.writable(orgId, conversationId, accountId);
219
219
  await this.removeIn(conversationId, itemId);
220
220
  await this.eventLog.publishChanged(conversationId, "queue");
221
+ // removing the last item unpauses the queue: the wakes it held for the tree go out
222
+ await this.runs.wakeHeldTree(conversationId);
221
223
  }
222
224
  // its own transaction: the caller notifies and publishes after the commit
223
225
  async removeIn(conversationId, itemId) {
@@ -240,13 +242,17 @@ let ConversationQueue = class ConversationQueue {
240
242
  */
241
243
  async sendNow(orgId, conversationId, accountId, itemId) {
242
244
  await this.conversations.writable(orgId, conversationId, accountId);
243
- const { event, fresh, switched } = await this.sendNowIn(conversationId, itemId);
245
+ const { event, fresh, switched, unarchived, skipped, toSeq } = await this.sendNowIn(conversationId, itemId);
244
246
  if (fresh)
245
- await this.eventLog.notify(conversationId, event.seq);
247
+ await this.eventLog.notify(conversationId, toSeq);
248
+ await this.conversations.announceSkipped(skipped);
246
249
  if (switched)
247
250
  await this.eventLog.publishChanged(conversationId, "selection");
251
+ if (unarchived)
252
+ await this.eventLog.publishChanged(conversationId, "archived");
248
253
  await this.eventLog.publishChanged(conversationId, "queue");
249
254
  await this.runs.ensureRun(conversationId);
255
+ await this.runs.wakeHeldTree(conversationId);
250
256
  return event;
251
257
  }
252
258
  // its own transaction: the caller notifies and publishes after the commit
@@ -279,7 +285,17 @@ let ConversationQueue = class ConversationQueue {
279
285
  const sent = await alreadySent(t, conversationId, row.client_message_id);
280
286
  const out = await appendQueuedIn(t, this.eventLog, conversationId, row);
281
287
  await unpauseIfEmpty(t, conversationId);
282
- return { ...out, fresh: !sent };
288
+ // sent during the run, the item is the author's message like a direct send: it skips the
289
+ // pending questions they may answer (reply-while-question spec §4.2)
290
+ const skips = sent
291
+ ? { records: [], toSeq: null }
292
+ : await this.conversations.skipQuestionsIn(conversationId, row.account_id, out.event.seq);
293
+ return {
294
+ ...out,
295
+ fresh: !sent,
296
+ skipped: skips.records,
297
+ toSeq: Math.max(out.event.seq, skips.toSeq ?? 0),
298
+ };
283
299
  }
284
300
  /** "Continue sending": clears the pause and lets `ensureRun` send the head item. */
285
301
  async resume(orgId, conversationId, accountId) {
@@ -291,6 +307,8 @@ let ConversationQueue = class ConversationQueue {
291
307
  .execute();
292
308
  await this.eventLog.publishChanged(conversationId, "queue");
293
309
  await this.runs.ensureRun(conversationId);
310
+ // a paused root holds the wakes of its whole tree (agent map spec §5.3)
311
+ await this.runs.wakeHeldTree(conversationId);
294
312
  }
295
313
  /** A queued item or a sent message for this client id (outside any transaction). */
296
314
  async prior(conversationId, clientMessageId) {
@@ -29,10 +29,19 @@ export declare const titleJobId: (conversationId: string, attempt: number) => st
29
29
  export declare const TITLE_MAX_ATTEMPTS = 3;
30
30
  /** Output cap of the title call. */
31
31
  export declare const TITLE_MAX_OUTPUT_TOKENS = 32;
32
- /** The longest generated title (characters); a rename has the same limit. */
32
+ /** The longest title a person can give by renaming (characters). */
33
33
  export declare const TITLE_MAX_CHARS = 120;
34
+ /** The longest generated title by display width (CJK and emoji count 2: ~24 CJK / 48 Latin). */
35
+ export declare const TITLE_MAX_WIDTH = 48;
34
36
  /** Each side of the excerpt is cut to this many characters. */
35
37
  export declare const TITLE_EXCERPT_CHARS = 1000;
38
+ /**
39
+ * Parameters of the title call where the target model declares them and the `title` purpose does
40
+ * not set them: no thinking, so the {@link TITLE_MAX_OUTPUT_TOKENS} budget goes to the title.
41
+ */
42
+ export declare const TITLE_PARAM_DEFAULTS: {
43
+ readonly thinking: "off";
44
+ };
36
45
  /** Time limit of one title call. */
37
46
  export declare const TITLE_TIMEOUT_MS = 60000;
38
47
  /** The system prompt of the title call (model-facing, English). */
@@ -41,8 +50,8 @@ export declare const TITLE_PROMPT: string;
41
50
  export declare function titleExcerpt(firstUser: string, firstReply: string): string;
42
51
  /**
43
52
  * The title from a model reply: the first non-empty line, without control or format characters,
44
- * wrapping quotes or trailing punctuation, at most {@link TITLE_MAX_CHARS} characters; null when
45
- * nothing is left.
53
+ * wrapping quotes or trailing punctuation, at most {@link TITLE_MAX_WIDTH} display width (cut on a
54
+ * character boundary, no ellipsis); null when nothing is left.
46
55
  */
47
56
  export declare function cleanTitle(reply: string): string | null;
48
57
  export interface TitleDeps {
@@ -47,10 +47,17 @@ export const titleJobId = (conversationId, attempt) => `title-${conversationId}-
47
47
  export const TITLE_MAX_ATTEMPTS = 3;
48
48
  /** Output cap of the title call. */
49
49
  export const TITLE_MAX_OUTPUT_TOKENS = 32;
50
- /** The longest generated title (characters); a rename has the same limit. */
50
+ /** The longest title a person can give by renaming (characters). */
51
51
  export const TITLE_MAX_CHARS = 120;
52
+ /** The longest generated title by display width (CJK and emoji count 2: ~24 CJK / 48 Latin). */
53
+ export const TITLE_MAX_WIDTH = 48;
52
54
  /** Each side of the excerpt is cut to this many characters. */
53
55
  export const TITLE_EXCERPT_CHARS = 1000;
56
+ /**
57
+ * Parameters of the title call where the target model declares them and the `title` purpose does
58
+ * not set them: no thinking, so the {@link TITLE_MAX_OUTPUT_TOKENS} budget goes to the title.
59
+ */
60
+ export const TITLE_PARAM_DEFAULTS = { thinking: "off" };
54
61
  /** Time limit of one title call. */
55
62
  export const TITLE_TIMEOUT_MS = 60_000;
56
63
  /** How far into the log the excerpt is looked for (events). */
@@ -58,8 +65,13 @@ const EXCERPT_SCAN_EVENTS = 2000;
58
65
  const PAGE = 500;
59
66
  const JOB = "title";
60
67
  /** The system prompt of the title call (model-facing, English). */
61
- export const TITLE_PROMPT = "Write a title of at most 8 words for this conversation, in the language the user writes in. " +
68
+ export const TITLE_PROMPT = "Write a short topic of what the user asked, not the reply, as a title for this conversation, " +
69
+ "in the language the user writes in. Use a noun phrase of at most 6 words or about 16 CJK " +
70
+ "characters: no sentence, no list. " +
62
71
  "Reply with the title only, no quotes or punctuation at the end.";
72
+ const WIDE_RE = /[\u1100-\u115F\u2E80-\u303E\u3041-\u33FF\u3400-\u4DBF\u4E00-\u9FFF\uA000-\uA4CF\uAC00-\uD7A3\uF900-\uFAFF\uFE30-\uFE6F\uFF00-\uFF60\uFFE0-\uFFE6]|\p{Extended_Pictographic}|[\u{20000}-\u{3FFFD}]/u;
73
+ /** Display width of a character: 2 for CJK, fullwidth forms and emoji, else 1. */
74
+ const widthOf = (ch) => (WIDE_RE.test(ch) ? 2 : 1);
63
75
  const cut = (s) => {
64
76
  const cps = Array.from(s);
65
77
  return cps.length <= TITLE_EXCERPT_CHARS ? s : `${cps.slice(0, TITLE_EXCERPT_CHARS).join("")}…`;
@@ -70,8 +82,8 @@ export function titleExcerpt(firstUser, firstReply) {
70
82
  }
71
83
  /**
72
84
  * The title from a model reply: the first non-empty line, without control or format characters,
73
- * wrapping quotes or trailing punctuation, at most {@link TITLE_MAX_CHARS} characters; null when
74
- * nothing is left.
85
+ * wrapping quotes or trailing punctuation, at most {@link TITLE_MAX_WIDTH} display width (cut on a
86
+ * character boundary, no ellipsis); null when nothing is left.
75
87
  */
76
88
  export function cleanTitle(reply) {
77
89
  const line = reply
@@ -86,10 +98,16 @@ export function cleanTitle(reply) {
86
98
  .replace(/^["'“”‘’「」《》`*]+|["'“”‘’「」《》`*]+$/gu, "")
87
99
  .replace(/[.。!!??,,;;::]+$/u, "")
88
100
  .trim();
89
- // counted in code points, so a cut never splits a surrogate pair
90
- const cps = Array.from(t);
91
- if (cps.length > TITLE_MAX_CHARS)
92
- t = cps.slice(0, TITLE_MAX_CHARS).join("").trimEnd();
101
+ // cut by display width over code points, so a cut never splits a surrogate pair
102
+ let width = 0;
103
+ let out = "";
104
+ for (const ch of t) {
105
+ width += widthOf(ch);
106
+ if (width > TITLE_MAX_WIDTH)
107
+ break;
108
+ out += ch;
109
+ }
110
+ t = out.trimEnd();
93
111
  return t === "" ? null : t;
94
112
  }
95
113
  const textOf = (content) => content.flatMap((b) => (b.type === "text" ? [b.text] : [])).join("");
@@ -204,6 +222,8 @@ export async function runTitleJob(d, conversationId, attempt) {
204
222
  maxOutputTokens: TITLE_MAX_OUTPUT_TOKENS,
205
223
  }, signal, {
206
224
  ...(fallback && { fallback: { model: fallback, params: {} } }),
225
+ // a thinking model spends the small output budget on thinking and returns no text
226
+ paramDefaults: TITLE_PARAM_DEFAULTS,
207
227
  beforeSend: async (target, request) => {
208
228
  await checkTitleHooks(d, scope, target, request, signal);
209
229
  sent = { ...target, at: Date.now() };
@@ -246,6 +266,14 @@ export async function runTitleJob(d, conversationId, attempt) {
246
266
  if (sent && d.hooks)
247
267
  observeTitle(d, scope, sent, out, null, signal);
248
268
  const title = cleanTitle(textOf(out.content));
269
+ if (title === null) {
270
+ d.log.warn("conversation title call returned no title", {
271
+ conversationId,
272
+ attempt,
273
+ stopReason: out.stopReason,
274
+ outputTokens: out.usage.outputTokens,
275
+ });
276
+ }
249
277
  const { written, usage } = await d.writes.writeResult(conversationId, attempt, out, title);
250
278
  if (usage) {
251
279
  await d.eventLog.notify(conversationId, usage.seq);
@@ -500,20 +528,16 @@ TitleQueue = __decorate([
500
528
  __param(3, Inject(KERNEL_LOGGER))
501
529
  ], TitleQueue);
502
530
  export { TitleQueue };
531
+ /** The title queue's registration (re-exported: the admin health reads its counts). */
532
+ const TITLE_QUEUE_MODULE = QueueModule.registerQueue(TITLE_QUEUE);
503
533
  /** Conversation titles: the queue and the job (consumed on the worker role). */
504
534
  let TitlesModule = class TitlesModule {
505
535
  };
506
536
  TitlesModule = __decorate([
507
537
  Module({
508
- imports: [
509
- EventLogModule,
510
- ModelsModule,
511
- ExtensionsModule,
512
- UsageReportModule,
513
- QueueModule.registerQueue(TITLE_QUEUE),
514
- ],
538
+ imports: [EventLogModule, ModelsModule, ExtensionsModule, UsageReportModule, TITLE_QUEUE_MODULE],
515
539
  providers: [TitleGenerator, TitleQueue],
516
- exports: [TitleQueue],
540
+ exports: [TitleQueue, TITLE_QUEUE_MODULE],
517
541
  })
518
542
  ], TitlesModule);
519
543
  export { TitlesModule };
@@ -0,0 +1,17 @@
1
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
+ /**
3
+ * A conversation and every sub-agent conversation below it (agent map spec §6: its children,
4
+ * grandchildren and so on, through `conversations.parent_conversation_id`), each with its level
5
+ * below `conversationId` (0 for the conversation itself), shallowest first. Deleted conversations
6
+ * are included (a deleted root's tree is still stopped); an unknown id yields nothing.
7
+ */
8
+ export declare function conversationTree(db: KernelSchemaDb, conversationId: string): Promise<{
9
+ id: string;
10
+ level: number;
11
+ }[]>;
12
+ /**
13
+ * The ancestors of a conversation (agent map spec §8: live progress reaches every level above a
14
+ * sub-agent), nearest first: its parent, the parent's parent and so on up to the root, through
15
+ * `conversations.parent_conversation_id`. Empty for a root or an unknown id.
16
+ */
17
+ export declare function conversationAncestors(db: KernelSchemaDb, conversationId: string): Promise<string[]>;
@@ -0,0 +1,42 @@
1
+ import { sql } from "kysely";
2
+ /**
3
+ * How many levels below a conversation the tree reads walk at most: far above
4
+ * `subagents.maxDepth`'s bound of 5, so a corrupt parent chain cannot loop forever.
5
+ */
6
+ const TREE_MAX_LEVELS = 16;
7
+ /**
8
+ * A conversation and every sub-agent conversation below it (agent map spec §6: its children,
9
+ * grandchildren and so on, through `conversations.parent_conversation_id`), each with its level
10
+ * below `conversationId` (0 for the conversation itself), shallowest first. Deleted conversations
11
+ * are included (a deleted root's tree is still stopped); an unknown id yields nothing.
12
+ */
13
+ export async function conversationTree(db, conversationId) {
14
+ const r = await sql `
15
+ WITH RECURSIVE tree(id, level) AS (
16
+ SELECT c.id, 0 FROM capybara.conversations c WHERE c.id = ${conversationId}
17
+ UNION ALL
18
+ SELECT c.id, t.level + 1
19
+ FROM capybara.conversations c JOIN tree t ON c.parent_conversation_id = t.id
20
+ WHERE c.kind = 'subagent' AND t.level < ${TREE_MAX_LEVELS}
21
+ )
22
+ SELECT id, level FROM tree ORDER BY level, id`.execute(db);
23
+ return r.rows;
24
+ }
25
+ /**
26
+ * The ancestors of a conversation (agent map spec §8: live progress reaches every level above a
27
+ * sub-agent), nearest first: its parent, the parent's parent and so on up to the root, through
28
+ * `conversations.parent_conversation_id`. Empty for a root or an unknown id.
29
+ */
30
+ export async function conversationAncestors(db, conversationId) {
31
+ const r = await sql `
32
+ WITH RECURSIVE up(id, parent, level) AS (
33
+ SELECT c.id, c.parent_conversation_id, 0 FROM capybara.conversations c
34
+ WHERE c.id = ${conversationId}
35
+ UNION ALL
36
+ SELECT c.id, c.parent_conversation_id, up.level + 1
37
+ FROM capybara.conversations c JOIN up ON c.id = up.parent
38
+ WHERE up.level < ${TREE_MAX_LEVELS}
39
+ )
40
+ SELECT id FROM up WHERE level > 0 ORDER BY level`.execute(db);
41
+ return r.rows.map((row) => row.id);
42
+ }
@@ -1,9 +1,11 @@
1
- import { type ExtensionContext, type ExtensionManifest, type ExtensionPointRef, type Logger, type ToolHandler, type ToolSpec } from "@capybara-hq/plugin-sdk";
1
+ import { type ExtensionContext, type ExtensionManifest, type ExtensionPointRef, type Logger, resolveUiSlots, type SetupCheckArgs, type SetupGuidePlace, type ToolHandler, type ToolSpec } from "@capybara-hq/plugin-sdk";
2
2
  import type { Redis } from "ioredis";
3
3
  import { Kysely } from "kysely";
4
4
  import { type RegisteredHook } from "../extensions/hooks.js";
5
5
  import { RegistrationLedger } from "../extensions/ledger.js";
6
6
  import type { LockService } from "../infra/lock/lock.service.js";
7
+ import type { ModelEmbeddings } from "../models/embeddings.js";
8
+ import type { HookRunner } from "../runtime/hook-calls.js";
7
9
  import type { EmbedTokens } from "../ui/embed-token.js";
8
10
  import { type UiActionHandler, type UiRender } from "../ui/registry.js";
9
11
  import { type BusSubscriber } from "./bus.js";
@@ -22,6 +24,17 @@ export interface KernelDeps {
22
24
  keyring: Keyring;
23
25
  /** Verifies embed tokens (`ctx.ui` embed requests; the one `EmbedTokens` provider). */
24
26
  embedTokens: Pick<EmbedTokens, "verify">;
27
+ /**
28
+ * The `ctx.models` broker (the one `ModelEmbeddings` provider). Absent (a ctx built alone in a
29
+ * test): `ctx.models` calls reject.
30
+ */
31
+ models?: Pick<ModelEmbeddings, "embed" | "describe">;
32
+ /**
33
+ * The host's hook registry: `ctx.models.embed` fires `model.request` through it (spec B §5.4).
34
+ * A required key, so no builder leaves policy hooks out by omission (fail closed by
35
+ * construction); only a ctx built alone in a test passes `undefined` (no hooks fire).
36
+ */
37
+ hooks: HookRunner | undefined;
25
38
  runWorkers: boolean;
26
39
  /** 内核 logger(`debug` 可选:插件 Logger 没有它,测试可不给)。 */
27
40
  log: Logger & {
@@ -39,6 +52,15 @@ export type RegisteredTool = {
39
52
  spec: ToolSpec;
40
53
  handler: ToolHandler;
41
54
  };
55
+ /**
56
+ * A setup check registered through `ctx.setup.check`: `place` and `run` read once from the
57
+ * definition at registration and frozen, so the extension cannot swap them afterwards (a getter
58
+ * on the definition runs once, at registration, never when a check runs).
59
+ */
60
+ export type RegisteredSetupCheck = Readonly<{
61
+ place: SetupGuidePlace;
62
+ run: (args: SetupCheckArgs) => Promise<unknown>;
63
+ }>;
42
64
  /** 插件经 `ctx.extensionPoints` 取用其他插件能力时,内核注入的访问接口。 */
43
65
  export interface ExtensionPointAccess {
44
66
  /** 已加载(setup 完成)的提供方,按加载顺序;按完整引用(含主版本)精确匹配。 */
@@ -48,14 +70,26 @@ export interface ExtensionPointAccess {
48
70
  }[];
49
71
  /** Names of the extensions enabled in the organization (`extension_org_configs.enabled` plus required bootstrap plugins, `enabled.ts`); queried every time, not cached. */
50
72
  enabledPlugins(orgId: string): Promise<Set<string>>;
73
+ /**
74
+ * Whether the extension's effective config is valid in the organization (layering spec A §6):
75
+ * a provider that is not is excluded from point resolution for that org.
76
+ */
77
+ configOk(orgId: string, plugin: string): Promise<boolean>;
51
78
  }
52
79
  /**
53
80
  * Queries the names of the extensions enabled in the organization (org config rows plus the
54
81
  * required bootstrap plugins, see `extensions/enabled.ts`), not cached.
55
82
  */
56
83
  export declare function queryEnabledPlugins(db: Kysely<any>, orgId: string): Promise<Set<string>>;
84
+ /**
85
+ * Whether the account is, right now, an active super admin (one query): what a platform embed
86
+ * token and the platform refresh stream re-check.
87
+ */
88
+ export declare function currentPlatformAccount(db: KernelDeps["db"], accountId: string): Promise<boolean>;
57
89
  /** 插件的 PG schema 名:`plugin_<name>`,name 中的 `-` 换成 `_`。 */
58
90
  export declare function pluginSchemaName(name: string): string;
91
+ /** What {@link resolveUiSlots} returns for a manifest. */
92
+ export type UiResolution = ReturnType<typeof resolveUiSlots>;
59
93
  /** 内核视角的插件 ctx:插件契约之外还带宿主要用的登记信息与关闭方法。 */
60
94
  export type KernelExtensionContext = ExtensionContext & {
61
95
  /** 本实例的登记账(C17):每次登记记一笔,撤销时逐项撤销。 */
@@ -74,11 +108,17 @@ export type KernelExtensionContext = ExtensionContext & {
74
108
  registeredTools: RegisteredTool[];
75
109
  /** Hooks registered through `ctx.hooks.on` (registration order). */
76
110
  registeredHooks: RegisteredHook[];
111
+ /** The manifest's `ui` resolved against the slot catalog once per load (UI slots spec §3.2). */
112
+ uiResolution: UiResolution;
77
113
  /** 经 `ctx.ui.view` 注册的视图(按贡献 id)。 */
78
114
  uiViews: ReadonlyMap<string, UiRender>;
79
115
  /** 经 `ctx.ui.action` 注册的动作处理函数(按贡献 id)。 */
80
116
  uiActions: ReadonlyMap<string, UiActionHandler>;
81
- /** setup 结束后调用:此后 `tools.register`、`ui.view`、`ui.action`、`hooks.on` 抛错。 */
117
+ /** Setup checks registered through `ctx.setup.check`, by id. */
118
+ setupChecks: ReadonlyMap<string, RegisteredSetupCheck>;
119
+ /**
120
+ * setup 结束后调用:此后 `tools.register`、`ui.view`、`ui.action`、`hooks.on`、`setup.check` 抛错。
121
+ */
82
122
  sealTools(): void;
83
123
  /** 中止 signal、封账并逐项撤销仍在账上的登记、关闭队列连接(幂等)。 */
84
124
  close(): Promise<void>;
@@ -97,10 +137,13 @@ export declare class LiveConfig {
97
137
  * `deploymentConfig` may be a {@link LiveConfig} (shared by the instance, replaceable in place);
98
138
  * otherwise a fixed value is wrapped.
99
139
  * - Granted automatically: `kv`, `lock`, `bus`, `queue`, `log`, `db`, `config`, `provide`;
100
- * - `secrets` only with `permissions.secrets`, `storage` only with `permissions.storage`; `http.route`
140
+ * - `secrets` only with `permissions.secrets`, `storage` only with `permissions.storage`, `models`
141
+ * only with `permissions.models` (and only its `embedding` purposes, through `deps.models`); `http.route`
101
142
  * only the method + path declared in `permissions.http`; `tools.register` only names declared in
102
- * `permissions.tools`; `ui.view` / `ui.action` only ids declared in `permissions.ui.views` (during
103
- * setup only); `ui.invalidate` sends a refresh over the kernel bus (namespace `kernel`), across
143
+ * `permissions.tools`; `ui.view` / `ui.action` only ids declared in `permissions.ui.views` or
144
+ * `permissions.ui.components` (a component's server view; during setup only); `setup.check` only
145
+ * ids declared in `permissions.setupChecks` (during setup only, `place` and `run` read once and
146
+ * frozen); `ui.invalidate` sends a refresh over the kernel bus (namespace `kernel`), across
104
147
  * replicas; `ui.verifyEmbedToken` checks an embed token the kernel signed: `claims.plugin` must be
105
148
  * this extension, the extension still enabled in that org and the caller still an active member of
106
149
  * the org (org not deleted); returns the current role;