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

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 +94 -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 +85 -10
  356. package/dist/extensions/bootstrap.js +215 -36
  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 +9 -3
  509. package/dist/lifecycle/kernel-lifecycle.js +51 -11
  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
@@ -11,20 +11,50 @@ import { randomUUID } from "node:crypto";
11
11
  import { Inject, Injectable } from "@nestjs/common";
12
12
  import { sql } from "kysely";
13
13
  import { AgentLookup, visibleTo } from "../agents/agent-lookup.js";
14
+ import { BackgroundTaskStopper } from "../background/stop.js";
15
+ import { unbindConversation } from "../channels/threads.js";
16
+ import { ConversationDevices, } from "../devices/conversation-devices.js";
14
17
  import { ApiError } from "../errors.js";
15
18
  import { KernelDb } from "../infra/database/kernel-db.js";
16
19
  import { TransactionHost } from "../infra/database/transaction-host.js";
17
20
  import { Transactional } from "../infra/database/transactional.decorator.js";
21
+ import { KernelEvents } from "../infra/events/kernel-events.js";
18
22
  import { KERNEL_LOGGER } from "../infra/tokens.js";
19
23
  import { ProviderRegistry } from "../runtime/providers.js";
20
24
  import { RunControl as RunControlService } from "../runtime/run-control.js";
25
+ import { rootConversationOf } from "../runtime/subagents/child.js";
21
26
  import { SkillInvoker } from "../skills/invoke.js";
22
27
  import { ConnectorContent } from "../tools/connector-content.js";
28
+ import { QuestionsService } from "../tools/questions.service.js";
23
29
  import { ConversationAccess, parentReachable } from "./access.js";
30
+ import { readAgentTree } from "./agent-tree.js";
24
31
  import { AttachmentsService } from "./attachments.service.js";
25
32
  import { EventLog } from "./event-log.js";
26
33
  import { userMessageIdemKey } from "./idem-keys.js";
34
+ import { readMessageContext, } from "./message-context.js";
27
35
  import { NO_SELECTION, planSelection, readSelection } from "./selection.js";
36
+ import { conversationTree } from "./tree.js";
37
+ /** Escapes `\`, `%` and `_` so user text is matched literally by `LIKE … ESCAPE '\'`. */
38
+ export function escapeLike(s) {
39
+ return s.replace(/[\\%_]/g, (ch) => `\\${ch}`);
40
+ }
41
+ /**
42
+ * SQL for the activity of the conversation row aliased/named `ref` (a correlated subquery).
43
+ * A run waiting on its sub-agents (status waiting with `wait_expires_at`, set only for a
44
+ * `subagents` wait) is still working, so it reports `running`; only a wait for a person
45
+ * (approval, input) reports `waiting`.
46
+ */
47
+ function activitySql(ref) {
48
+ const id = sql.ref(`${ref}.id`);
49
+ return sql `(
50
+ SELECT CASE
51
+ WHEN lr.status IN ('queued', 'running') THEN 'running'
52
+ WHEN lr.status = 'waiting' AND lr.wait_expires_at IS NOT NULL THEN 'running'
53
+ WHEN lr.status = 'waiting' THEN 'waiting' END
54
+ FROM capybara.runs lr WHERE lr.conversation_id = ${id}
55
+ ORDER BY lr.created_at DESC, lr.id DESC LIMIT 1
56
+ )`;
57
+ }
28
58
  const notFound = () => new ApiError("conversation.not_found", "Conversation not found");
29
59
  export { userMessageIdemKey } from "./idem-keys.js";
30
60
  const COLUMNS = [
@@ -40,6 +70,8 @@ const COLUMNS = [
40
70
  "updated_at",
41
71
  "parent_conversation_id",
42
72
  "subagent_type",
73
+ "archived_at",
74
+ "device_id",
43
75
  ];
44
76
  function toView(r) {
45
77
  return {
@@ -55,10 +87,18 @@ function toView(r) {
55
87
  updatedAt: r.updated_at,
56
88
  parentConversationId: r.parent_conversation_id,
57
89
  subagentType: r.subagent_type,
90
+ archivedAt: r.archived_at,
91
+ deviceId: r.device_id,
92
+ activity: r.activity ?? null,
58
93
  };
59
94
  }
60
95
  /** The longest conversation title (characters, after trimming). */
61
96
  export const CONVERSATION_TITLE_MAX_CHARS = 120;
97
+ /**
98
+ * How far back a `before` page of events reaches past its `limit` for the start of a turn (history
99
+ * paging spec §2); a longer run starts mid-run.
100
+ */
101
+ export const EVENTS_TURN_EXTEND = 2000;
62
102
  /** The sums of the `usage` events matching `where` (over `conversation_events e`), one row. */
63
103
  const usageSums = (where) => sql `
64
104
  SELECT
@@ -90,6 +130,10 @@ let ConversationsService = class ConversationsService {
90
130
  content;
91
131
  attachments;
92
132
  invoker;
133
+ background;
134
+ devices;
135
+ questions;
136
+ events;
93
137
  txHost;
94
138
  constructor(db, eventLog, agents, access,
95
139
  /** Starts and stops the conversation's runs. */
@@ -101,7 +145,13 @@ let ConversationsService = class ConversationsService {
101
145
  /** Binds uploaded files to the conversation in the message's transaction. */
102
146
  attachments,
103
147
  /** Renders a person's skill invocation (phase D). */
104
- invoker, txHost) {
148
+ invoker,
149
+ /** Stops a deleted conversation's background tasks. */
150
+ background,
151
+ /** The device a new conversation is bound to (environments spec §4.1 item 1). */
152
+ devices,
153
+ /** A starter's message skips the run's pending questions (reply-while-question spec §8.1). */
154
+ questions, events, txHost) {
105
155
  this.db = db;
106
156
  this.eventLog = eventLog;
107
157
  this.agents = agents;
@@ -112,6 +162,10 @@ let ConversationsService = class ConversationsService {
112
162
  this.content = content;
113
163
  this.attachments = attachments;
114
164
  this.invoker = invoker;
165
+ this.background = background;
166
+ this.devices = devices;
167
+ this.questions = questions;
168
+ this.events = events;
115
169
  this.txHost = txHost;
116
170
  }
117
171
  /**
@@ -123,12 +177,24 @@ let ConversationsService = class ConversationsService {
123
177
  .ensureRun(conversationId)
124
178
  .catch((err) => this.log.warn("ensureRun on conversation open failed", { conversationId, err }));
125
179
  }
126
- /** 新建会话;agent 对该账号不可用 → `agent.not_found`。 */
127
- async create(orgId, accountId, agentId) {
180
+ /**
181
+ * Creates an empty conversation bound to its device (`pick`, see
182
+ * {@link ConversationDevices.forNew}); an agent the account cannot use →
183
+ * `agent.not_found`, a device it may not use → `device.not_found` /
184
+ * `device.unavailable`, and nothing is created.
185
+ */
186
+ async create(orgId, accountId, agentId, pick = {}) {
128
187
  await this.agents.get(orgId, agentId, accountId);
188
+ const deviceId = await this.devices.forNew(orgId, accountId, pick);
129
189
  const row = await this.db
130
190
  .insertInto("conversations")
131
- .values({ id: randomUUID(), org_id: orgId, agent_id: agentId, account_id: accountId })
191
+ .values({
192
+ id: randomUUID(),
193
+ org_id: orgId,
194
+ agent_id: agentId,
195
+ account_id: accountId,
196
+ device_id: deviceId,
197
+ })
132
198
  .returning(COLUMNS)
133
199
  .executeTakeFirstOrThrow();
134
200
  return toView(row);
@@ -139,18 +205,22 @@ let ConversationsService = class ConversationsService {
139
205
  * message's `clientMessageId` (`create_request_id`), so a retried send returns the same
140
206
  * conversation and event with `created: false`. An agent the caller cannot use →
141
207
  * `agent.not_found` and nothing is written. Queues a run afterwards, like `postUserMessage`.
208
+ * `events` are every event the create wrote, in seq order from seq 1 (a `model_switched` before
209
+ * the message when the send switched), so a client can seed the new conversation's log whole.
142
210
  */
143
- async createWithMessage(orgId, accountId, agentId, input) {
211
+ async createWithMessage(orgId, accountId, agentId, input, pick = {}) {
144
212
  const agent = await this.agents.get(orgId, agentId, accountId);
145
213
  const prior = await this.findCreated(orgId, accountId, agentId, input.clientMessageId);
146
214
  if (prior)
147
215
  return prior;
148
- const next = await this.planSwitch(agent.definition, NO_SELECTION, input);
216
+ const deviceId = await this.devices.forNew(orgId, accountId, pick);
217
+ const next = await this.planSwitch(orgId, agent.definition, NO_SELECTION, input);
149
218
  const extra = await this.resolveExtra(orgId, accountId, input);
150
219
  const invoked = await this.prepareSkill(orgId, agentId, undefined, agent.definition, input);
151
220
  const id = randomUUID();
152
- const written = await this.createIn(id, orgId, accountId, agentId, input, next, extra, invoked);
153
- if (!written) {
221
+ const all = await this.createIn({ id, orgId, accountId, agentId, deviceId }, input, next, extra, invoked);
222
+ const written = all?.at(-1);
223
+ if (!all || !written) {
154
224
  const raced = await this.findCreated(orgId, accountId, agentId, input.clientMessageId);
155
225
  if (!raced)
156
226
  throw new ApiError("conflict", "The conversation is being created; retry");
@@ -158,18 +228,20 @@ let ConversationsService = class ConversationsService {
158
228
  }
159
229
  await this.eventLog.notify(id, written.seq);
160
230
  await this.runs.ensureRun(id);
161
- return { conversation: await this.rowView(id), event: written, created: true };
231
+ return { conversation: await this.rowView(id), event: written, events: all, created: true };
162
232
  }
163
233
  /** The conversation row and its first message (undefined: a concurrent retry committed first). */
164
234
  // its own transaction: the caller notifies and publishes after the commit
165
- async createIn(id, orgId, accountId, agentId, input, next, extra, invoked) {
235
+ async createIn(conv, input, next, extra, invoked) {
236
+ const { id, orgId, accountId } = conv;
166
237
  const row = await this.db
167
238
  .insertInto("conversations")
168
239
  .values({
169
240
  id,
170
241
  org_id: orgId,
171
- agent_id: agentId,
242
+ agent_id: conv.agentId,
172
243
  account_id: accountId,
244
+ device_id: conv.deviceId,
173
245
  create_request_id: input.clientMessageId,
174
246
  })
175
247
  .onConflict((oc) => oc
@@ -182,7 +254,9 @@ let ConversationsService = class ConversationsService {
182
254
  if (!row)
183
255
  return undefined;
184
256
  const blocks = await this.bindIn(orgId, id, accountId, input.files ?? []);
185
- return this.writeMessage(id, accountId, input, next, extra, blocks, invoked);
257
+ // a new conversation has no run yet, so nothing to skip
258
+ return (await this.writeMessage(orgId, id, accountId, input, next, extra, blocks, invoked))
259
+ .events;
186
260
  }
187
261
  /**
188
262
  * The conversation (and its first event) an earlier first send with this id created. The id used
@@ -206,8 +280,10 @@ let ConversationsService = class ConversationsService {
206
280
  const event = await this.eventLog.findByIdem(row.id, userMessageIdemKey(clientMessageId));
207
281
  if (!event)
208
282
  return null;
283
+ // what the first send wrote: the log from its start up to the message
284
+ const events = (await this.eventLog.readAfter(row.id, 0, event.seq)).filter((e) => e.seq <= event.seq);
209
285
  await this.runs.ensureRun(row.id);
210
- return { conversation: toView(row), event, created: false };
286
+ return { conversation: toView(row), event, events, created: false };
211
287
  }
212
288
  async rowView(id) {
213
289
  return toView(await this.db
@@ -231,6 +307,65 @@ let ConversationsService = class ConversationsService {
231
307
  await this.eventLog.publishChanged(conversationId, "title");
232
308
  return toView(row);
233
309
  }
310
+ /**
311
+ * Archives or unarchives a conversation (owner only, as {@link rename}). An archived
312
+ * conversation leaves the default lists but stays readable. Publishes `changed: archived`.
313
+ */
314
+ async setArchived(orgId, conversationId, accountId, archived) {
315
+ await this.writable(orgId, conversationId, accountId);
316
+ const row = await this.db
317
+ .updateTable("conversations")
318
+ .set({ archived_at: archived ? sql `now()` : null })
319
+ .where("id", "=", conversationId)
320
+ .returning(COLUMNS)
321
+ .executeTakeFirstOrThrow();
322
+ await this.eventLog.publishChanged(conversationId, "archived");
323
+ return toView(row);
324
+ }
325
+ /**
326
+ * Soft-deletes a conversation (owner only; a sub-agent's conversation is `conversation.read_only`):
327
+ * stops an active run, hides the conversation everywhere for its owner and drops its channel
328
+ * bindings, stops every running background task in its sandbox (its sub-agents' too; outside
329
+ * the delete's transaction, a task whose sandbox cannot be reached ends `lost` with
330
+ * `kill_pending`), then every active run of its sub-agent tree (agent map spec §10). The tasks
331
+ * are stopped after the conversation is marked deleted, so no finish
332
+ * (the stops' own, or one the poller writes meanwhile) can wake a run on it: `ensureRun` refuses a
333
+ * deleted conversation (the stops' finishes carry `stoppedBy: "deletion"` as well). The event
334
+ * log, runs and trajectory stay (super admins still see them).
335
+ */
336
+ async remove(orgId, conversationId, accountId) {
337
+ await this.writable(orgId, conversationId, accountId);
338
+ try {
339
+ await this.abort(orgId, conversationId, accountId);
340
+ }
341
+ catch (e) {
342
+ if (!(e instanceof ApiError && e.code === "run.not_active"))
343
+ throw e;
344
+ }
345
+ await this.markDeleted(conversationId);
346
+ // after the mark, so no finish or delivery of the stops below can start a run on the deleted
347
+ // root (`ensureRun` refuses it). The sandbox's tasks stop first, so the sub-agents' tasks end
348
+ // as a deletion; the tree stop then only stops a task a sub-agent started in between
349
+ // (`stoppedBy: "subagent_end"`, which never wakes either)
350
+ await this.background.stopForDeletedConversation(conversationId);
351
+ // the whole tree stops (agent map spec §10)
352
+ await this.runs.stopTree(conversationId, accountId, { includeSelf: false });
353
+ await this.eventLog.publishChanged(conversationId, "deleted");
354
+ }
355
+ // the publish happens after the commit, in the caller
356
+ async markDeleted(conversationId) {
357
+ await this.db
358
+ .updateTable("conversations")
359
+ .set({ deleted_at: sql `now()` })
360
+ .where("id", "=", conversationId)
361
+ .execute();
362
+ // Queued messages must not start a run on a deleted conversation
363
+ await this.db
364
+ .deleteFrom("conversation_queue")
365
+ .where("conversation_id", "=", conversationId)
366
+ .execute();
367
+ await unbindConversation(this.db.db, conversationId);
368
+ }
234
369
  /** 读会话:非所有者、或 agent 已对所有者不可用 → `conversation.not_found`。 */
235
370
  async get(orgId, conversationId, viewerAccountId) {
236
371
  const { kind: _kind, ...row } = await this.readable(orgId, conversationId, viewerAccountId);
@@ -255,6 +390,7 @@ let ConversationsService = class ConversationsService {
255
390
  .where("id", "=", conversationId)
256
391
  .where("org_id", "=", orgId)
257
392
  .where("account_id", "=", viewerAccountId)
393
+ .where("deleted_at", "is", null)
258
394
  // Hidden eval replay conversations (kind 'eval') are not reachable here (only the trajectory
259
395
  // viewer shows them); a sub-agent's conversation is, for its owner (sub-agents spec §6.1)
260
396
  .where("kind", "in", ["chat", "subagent"])
@@ -284,10 +420,13 @@ let ConversationsService = class ConversationsService {
284
420
  let q = this.db
285
421
  .selectFrom("conversations")
286
422
  .select(COLUMNS)
423
+ .select(activitySql("conversations").as("activity"))
287
424
  .where("org_id", "=", orgId)
288
425
  .where("account_id", "=", accountId)
289
426
  // 评测回放的隐藏对话(kind = 'eval')不在「我的对话」里
290
427
  .where("kind", "=", "chat")
428
+ .where("deleted_at", "is", null)
429
+ .where("archived_at", opts.archived === true ? "is not" : "is", null)
291
430
  .where((eb) => eb.exists(eb
292
431
  .selectFrom("agents")
293
432
  .select(sql `1`.as("one"))
@@ -299,6 +438,12 @@ let ConversationsService = class ConversationsService {
299
438
  .limit(opts.limit);
300
439
  if (opts.agentId !== undefined)
301
440
  q = q.where("agent_id", "=", opts.agentId);
441
+ if (opts.q !== undefined) {
442
+ q = q.where(sql `conversations.title ILIKE ${`%${escapeLike(opts.q)}%`} ESCAPE '\\'`);
443
+ }
444
+ if (opts.state !== undefined) {
445
+ q = q.where(sql `${activitySql("conversations")} = ${opts.state}`);
446
+ }
302
447
  if (opts.after !== undefined) {
303
448
  const after = opts.after;
304
449
  q = q.where((eb) => sql `(${eb.ref("updated_at")}, ${eb.ref("id")}) < (
@@ -322,6 +467,11 @@ let ConversationsService = class ConversationsService {
322
467
  .where("agents.org_id", "=", orgId)
323
468
  .where("agents.deleted_at", "is", null)
324
469
  .where(visibleTo(accountId));
470
+ const archivedFilter = opts.archived === true ? sql `c.archived_at IS NOT NULL` : sql `c.archived_at IS NULL`;
471
+ const searchFilter = opts.q === undefined
472
+ ? sql ``
473
+ : sql `AND c.title ILIKE ${`%${escapeLike(opts.q)}%`} ESCAPE '\\'`;
474
+ const stateFilter = opts.state === undefined ? sql `` : sql `AND ${activitySql("c")} = ${opts.state}`;
325
475
  const cursor = opts.after === undefined
326
476
  ? sql ``
327
477
  : sql `WHERE (g.latest_at, g.agent_id) < (
@@ -332,6 +482,7 @@ let ConversationsService = class ConversationsService {
332
482
  SELECT c.agent_id, max(c.updated_at) AS latest_at
333
483
  FROM capybara.conversations c
334
484
  WHERE c.org_id = ${orgId} AND c.account_id = ${accountId} AND c.kind = 'chat'
485
+ AND c.deleted_at IS NULL AND ${archivedFilter} ${searchFilter} ${stateFilter}
335
486
  AND c.agent_id IN ${visibleAgents}
336
487
  GROUP BY c.agent_id
337
488
  ), page AS (
@@ -341,16 +492,19 @@ let ConversationsService = class ConversationsService {
341
492
  LIMIT ${opts.limit + 1}
342
493
  )
343
494
  SELECT page.agent_id, page.latest_at, v.definition ->> 'name' AS agent_name,
344
- cs.id, cs.org_id, cs.account_id, cs.title, cs.title_source, cs.selection, cs.last_seq,
345
- cs.created_at, cs.updated_at, cs.parent_conversation_id, cs.subagent_type
495
+ a.profile_avatar, a.profile_updated_at, cs.id, cs.org_id, cs.account_id, cs.title, cs.title_source, cs.selection, cs.last_seq,
496
+ cs.created_at, cs.updated_at, cs.parent_conversation_id, cs.subagent_type,
497
+ cs.archived_at, cs.device_id, cs.activity
346
498
  FROM page
347
499
  JOIN capybara.agents a ON a.id = page.agent_id
348
500
  JOIN capybara.agent_versions v ON v.agent_id = a.id AND v.version = a.current_version
349
501
  CROSS JOIN LATERAL (
350
502
  SELECT c.id, c.org_id, c.account_id, c.title, c.title_source, c.selection, c.last_seq,
351
- c.created_at, c.updated_at, c.parent_conversation_id, c.subagent_type
503
+ c.created_at, c.updated_at, c.parent_conversation_id, c.subagent_type,
504
+ c.archived_at, c.device_id, ${activitySql("c")} AS activity
352
505
  FROM capybara.conversations c
353
506
  WHERE c.org_id = ${orgId} AND c.account_id = ${accountId} AND c.kind = 'chat'
507
+ AND c.deleted_at IS NULL AND ${archivedFilter} ${searchFilter} ${stateFilter}
354
508
  AND c.agent_id = page.agent_id
355
509
  ORDER BY c.updated_at DESC, c.id DESC
356
510
  LIMIT ${opts.perGroup + 1}
@@ -362,7 +516,14 @@ let ConversationsService = class ConversationsService {
362
516
  for (const r of rows) {
363
517
  if (current?.agent.id !== r.agent_id) {
364
518
  current = {
365
- agent: { id: r.agent_id, name: r.agent_name ?? "" },
519
+ agent: {
520
+ id: r.agent_id,
521
+ name: r.agent_name ?? "",
522
+ profile: {
523
+ avatar: r.profile_avatar,
524
+ updatedAt: r.profile_updated_at.toISOString(),
525
+ },
526
+ },
366
527
  latestAt: r.latest_at,
367
528
  conversations: [],
368
529
  more: false,
@@ -377,7 +538,14 @@ let ConversationsService = class ConversationsService {
377
538
  }
378
539
  const page = groups.slice(0, opts.limit);
379
540
  const next = groups.length > opts.limit ? (page.at(-1)?.agent.id ?? null) : null;
380
- return { groups: page, next };
541
+ // The archived entry's count ignores `q` and `state`
542
+ const counted = await sql `
543
+ SELECT count(*) AS n FROM capybara.conversations c
544
+ WHERE c.org_id = ${orgId} AND c.account_id = ${accountId} AND c.kind = 'chat'
545
+ AND c.deleted_at IS NULL AND c.archived_at IS NOT NULL
546
+ AND c.agent_id IN ${visibleAgents}
547
+ `.execute(this.db.db);
548
+ return { groups: page, next, archivedCount: Number(counted.rows[0]?.n ?? 0) };
381
549
  }
382
550
  /**
383
551
  * The sub-agents of a conversation, newest first (sub-agents spec §14.3); owner only, as
@@ -459,26 +627,38 @@ let ConversationsService = class ConversationsService {
459
627
  return { subagents, next };
460
628
  }
461
629
  /**
462
- * A conversation's token usage: its own `usage` events (compaction included) plus those of its
463
- * sub-agents (sub-agents spec §8.3), whose logs keep their own. Owner only, as {@link get}.
630
+ * The agent tree of a root conversation (agent map spec §8, §9.2): the root and every sub-agent
631
+ * below it with status, model, time, tokens and tool calls. Owner only, as {@link isAccessible};
632
+ * a sub-agent's id (not a root) is `conversation.not_found` too.
633
+ */
634
+ async agentTree(orgId, conversationId, viewerAccountId) {
635
+ if (!(await this.isAccessible(orgId, conversationId, viewerAccountId)))
636
+ throw notFound();
637
+ const root = await readAgentTree(this.db.db, orgId, conversationId);
638
+ if (!root)
639
+ throw notFound();
640
+ return { root };
641
+ }
642
+ /**
643
+ * A conversation's token usage: its own `usage` events (compaction included) plus those of every
644
+ * sub-agent below it, at any depth (sub-agents spec §8.3, agent map spec §6: every descendant
645
+ * counts toward the root; `conversationTree`), whose logs keep their own. Owner only, as
646
+ * {@link get}.
464
647
  */
465
648
  async usage(orgId, conversationId, viewerAccountId) {
466
649
  if (!(await this.isAccessible(orgId, conversationId, viewerAccountId)))
467
650
  throw notFound();
468
- const { rows } = await sql `${usageSums(sql `e.conversation_id IN (
469
- SELECT ${conversationId}::text
470
- UNION ALL
471
- SELECT c.id FROM capybara.conversations c
472
- WHERE c.parent_conversation_id = ${conversationId} AND c.kind = 'subagent'
473
- )`)}`.execute(this.db.db);
651
+ const ids = (await conversationTree(this.db.db, conversationId)).map((c) => c.id);
652
+ const { rows } = await sql `${usageSums(sql `e.conversation_id IN (${sql.join(ids.length > 0 ? ids : [conversationId])})`)}`.execute(this.db.db);
474
653
  const row = rows[0];
475
654
  return row
476
655
  ? toUsage(row)
477
656
  : { inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0 };
478
657
  }
479
658
  /**
480
- * The conversation whose sandbox `conversationId` works in: a sub-agent's is its parent's
481
- * (sub-agents spec §10.1), any other its own. Call only after an access check.
659
+ * The conversation whose sandbox `conversationId` works in: a sub-agent's is its root
660
+ * conversation's at any depth (sub-agents spec §10.1, agent map spec §6), any other its own. Call
661
+ * only after an access check.
482
662
  */
483
663
  async sandboxConversationOf(orgId, conversationId) {
484
664
  const row = await this.db
@@ -487,7 +667,9 @@ let ConversationsService = class ConversationsService {
487
667
  .where("id", "=", conversationId)
488
668
  .where("org_id", "=", orgId)
489
669
  .executeTakeFirst();
490
- return row?.parent_conversation_id ?? conversationId;
670
+ if (!row?.parent_conversation_id)
671
+ return conversationId;
672
+ return rootConversationOf(this.db.db, row.parent_conversation_id);
491
673
  }
492
674
  /** 读事件(先做 `get` 的可见性判定);顺带不阻塞地 {@link kickRun}。 */
493
675
  async listEvents(orgId, conversationId, viewerAccountId, afterSeq, limit) {
@@ -495,6 +677,16 @@ let ConversationsService = class ConversationsService {
495
677
  this.kickRun(conversationId);
496
678
  return this.eventLog.readAfter(conversationId, afterSeq, limit);
497
679
  }
680
+ /**
681
+ * The turn-aligned page of events before `beforeSeq` (`null`: the log's last page), with how
682
+ * many runs started before it ({@link EventLog.readTurnPageBefore}; history paging spec §2).
683
+ * Visibility as {@link get}; kicks a stalled run as {@link listEvents} does.
684
+ */
685
+ async listEventsBefore(orgId, conversationId, viewerAccountId, beforeSeq, limit) {
686
+ await this.get(orgId, conversationId, viewerAccountId);
687
+ this.kickRun(conversationId);
688
+ return this.eventLog.readTurnPageBefore(conversationId, beforeSeq, limit, EVENTS_TURN_EXTEND);
689
+ }
498
690
  /**
499
691
  * 追加一条用户消息;带 `clientMessageId` 时重复提交返回同一事件。写入后调用 `ensureRun`:
500
692
  * 没有进行中的运行时投递一轮;运行中则由当前运行在步骤间隙吸收,或在它结束时再次 `ensureRun`。
@@ -527,46 +719,60 @@ let ConversationsService = class ConversationsService {
527
719
  : undefined;
528
720
  const next = agent === undefined || (input.model === undefined && input.effort === undefined)
529
721
  ? null
530
- : await this.planSwitch(agent, conv.selection, input);
722
+ : await this.planSwitch(orgId, agent, conv.selection, input);
531
723
  const extra = await this.resolveExtra(orgId, accountId, input);
532
724
  const invoked = agent === undefined
533
725
  ? undefined
534
726
  : await this.prepareSkill(orgId, conv.agentId, conversationId, agent, input);
535
- let event;
536
- if (files.length > 0 || next !== null) {
537
- event = await this.postIn(orgId, conversationId, accountId, input, next, extra, invoked);
538
- await this.eventLog.notify(conversationId, event.seq);
539
- if (next !== null)
540
- await this.eventLog.publishChanged(conversationId, "selection");
541
- }
542
- else {
543
- [event] = await this.eventLog.append(conversationId, [
544
- this.userMessage(accountId, input, extra, [], invoked),
545
- ]);
727
+ // one transaction: the sender, time zone and language are read with the message's write
728
+ // (run context spec §3.2)
729
+ const { event, skipped, toSeq } = await this.postIn(orgId, conversationId, accountId, input, next, extra, invoked);
730
+ await this.eventLog.notify(conversationId, toSeq);
731
+ await this.announceSkipped(skipped);
732
+ if (next !== null)
733
+ await this.eventLog.publishChanged(conversationId, "selection");
734
+ // The message is written: it brings an archived conversation back into the default lists
735
+ if (conv.archivedAt !== null) {
736
+ await this.db
737
+ .updateTable("conversations")
738
+ .set({ archived_at: null })
739
+ .where("id", "=", conversationId)
740
+ .execute();
741
+ await this.eventLog.publishChanged(conversationId, "archived");
546
742
  }
547
743
  await this.runs.ensureRun(conversationId);
548
744
  return event;
549
745
  }
550
- /** A message with files or a model switch: binds the files and writes it in one transaction. */
746
+ /**
747
+ * Writes a message in one transaction: binds its files, reads its sender context and appends it
748
+ * (after its `model_switched` when it switches).
749
+ */
551
750
  // its own transaction: the caller notifies and publishes after the commit
552
751
  async postIn(orgId, conversationId, accountId, input, next, extra, invoked) {
553
752
  const blocks = await this.bindIn(orgId, conversationId, accountId, input.files ?? []);
554
- return this.writeMessage(conversationId, accountId, input, next, extra, blocks, invoked);
753
+ const written = await this.writeMessage(orgId, conversationId, accountId, input, next, extra, blocks, invoked);
754
+ const event = written.events.at(-1);
755
+ return {
756
+ event,
757
+ skipped: written.skipped,
758
+ toSeq: Math.max(event.seq, written.skippedToSeq ?? 0),
759
+ };
555
760
  }
556
761
  /**
557
762
  * The selection a message switches to, or null when it changes nothing. A model equal to the
558
763
  * agent's means "back to the agent's model" (null); a model change without `effort` resets the
559
764
  * effort. The target model must resolve (`agent.model_unavailable`) and declare the effort
560
- * (`validation_failed`). Resolving is the agent editor's check: providers are deployment-scoped
561
- * and serve chat models only. If per-org provider enablement is added, this check and the run
562
- * worker's `fallBackIfUnavailable` must follow it.
765
+ * (`validation_failed`). Resolving is the agent editor's check, for the org (its effective
766
+ * provider config, spec B §5.5) and its disabled lists: a model the platform or the org disabled,
767
+ * or a non-chat model, is refused (spec B §5.3), as the run worker's `fallBackIfUnavailable` falls
768
+ * back from it.
563
769
  */
564
- async planSwitch(agent, current, input) {
770
+ async planSwitch(orgId, agent, current, input) {
565
771
  const next = planSelection(agent.model, current, input);
566
772
  if (next === null)
567
773
  return null;
568
774
  const { model, effort } = next;
569
- const { info } = await this.providers.resolve(model ?? agent.model);
775
+ const { info } = await this.providers.resolve(orgId, model ?? agent.model);
570
776
  if (effort !== null) {
571
777
  const knob = info.parameters.find((p) => p.key === "effort");
572
778
  const values = knob?.schema?.enum ?? [];
@@ -587,13 +793,40 @@ let ConversationsService = class ConversationsService {
587
793
  if (pick.model === undefined && pick.effort === undefined)
588
794
  return;
589
795
  const agent = await this.agents.get(orgId, conv.agentId, accountId);
590
- await this.planSwitch(agent.definition, conv.selection, pick);
796
+ await this.planSwitch(orgId, agent.definition, conv.selection, pick);
797
+ }
798
+ /**
799
+ * Skips, in the caller's transaction (it wrote `accountId`'s message at `messageSeq` and holds the
800
+ * conversation row lock), the pending questions that message closes (reply-while-question spec
801
+ * §8.1). The queue's "send now" uses it as the direct send does; announce after the commit with
802
+ * {@link announceSkipped}.
803
+ */
804
+ async skipQuestionsIn(conversationId, accountId, messageSeq) {
805
+ return this.questions.skipPendingIn(conversationId, accountId, messageSeq);
806
+ }
807
+ /**
808
+ * After the commit: announces each skipped question (`question.answered`, outcome `skipped`), so
809
+ * its run resumes (waits) and its IM card updates (channel jobs).
810
+ */
811
+ async announceSkipped(records) {
812
+ for (const q of records) {
813
+ await this.events.emit("question.answered", {
814
+ id: q.id,
815
+ orgId: q.orgId,
816
+ conversationId: q.conversationId,
817
+ runId: q.runId,
818
+ outcome: "skipped",
819
+ });
820
+ }
591
821
  }
592
822
  /**
593
823
  * Writes the message (preceded by its `model_switched` when it switches) inside `t` and updates
594
- * `conversations.selection`; returns the `user_message` event. The caller notifies after commit.
824
+ * `conversations.selection`; returns the events written, in seq order (the `user_message`
825
+ * last). A message this call newly wrote (not a retry's deduped one) then skips the pending
826
+ * questions its author may answer (reply-while-question spec §8.1): `skipped` and the highest
827
+ * seq their events took. The caller notifies and emits `question.answered` after commit.
595
828
  */
596
- async writeMessage(conversationId, accountId, input, next, extra, blocks, invoked) {
829
+ async writeMessage(orgId, conversationId, accountId, input, next, extra, blocks, invoked) {
597
830
  const events = [];
598
831
  if (next !== null) {
599
832
  events.push({
@@ -604,8 +837,19 @@ let ConversationsService = class ConversationsService {
604
837
  payload: { ...next, byAccountId: accountId, reason: "user" },
605
838
  });
606
839
  }
607
- events.push(this.userMessage(accountId, input, extra, blocks, invoked));
608
- const written = await this.eventLog.appendIn(conversationId, events);
840
+ const context = await readMessageContext(this.db.db, {
841
+ orgId,
842
+ accountId,
843
+ senderName: input.senderName,
844
+ browser: { timeZone: input.timeZone, locale: input.locale },
845
+ im: input.im,
846
+ });
847
+ events.push(this.userMessage(accountId, input, extra, blocks, invoked, context));
848
+ const { events: written, fresh } = await this.eventLog.appendInReport(conversationId, events);
849
+ const message = written.at(-1);
850
+ const skips = fresh.at(-1) === true
851
+ ? await this.skipQuestionsIn(conversationId, accountId, message.seq)
852
+ : { records: [], toSeq: null };
609
853
  if (next !== null) {
610
854
  const t = this.db.db;
611
855
  // the cache follows the log (a retried message's switch may be an old, deduped event that a
@@ -616,7 +860,7 @@ let ConversationsService = class ConversationsService {
616
860
  .where("id", "=", conversationId)
617
861
  .execute();
618
862
  }
619
- return written.at(-1);
863
+ return { events: written, skipped: skips.records, skippedToSeq: skips.toSeq };
620
864
  }
621
865
  /**
622
866
  * Renders the message's skill invocation (phase D), or undefined when it has none. Resolved
@@ -661,7 +905,7 @@ let ConversationsService = class ConversationsService {
661
905
  return [];
662
906
  return this.attachments.bindForMessage(orgId, conversationId, accountId, files);
663
907
  }
664
- userMessage(accountId, input, extra, fileBlocks, invoked) {
908
+ userMessage(accountId, input, extra, fileBlocks, invoked, context) {
665
909
  // a skill invocation's rendered text replaces the typed arguments as content[0]
666
910
  const text = invoked?.text ?? input.text;
667
911
  return {
@@ -678,6 +922,7 @@ let ConversationsService = class ConversationsService {
678
922
  ],
679
923
  ...(extra.attachments.length > 0 && { attachments: extra.attachments }),
680
924
  authorAccountId: accountId,
925
+ ...context,
681
926
  ...(input.clientMessageId !== undefined && { clientMessageId: input.clientMessageId }),
682
927
  ...(input.retryOf !== undefined && { retryOf: input.retryOf }),
683
928
  ...(invoked !== undefined && { skill: invoked.skill }),
@@ -688,9 +933,26 @@ let ConversationsService = class ConversationsService {
688
933
  * 中止会话当前的运行(queued / running / waiting):返回 runId;没有 → `run.not_active`。
689
934
  * 等人处理的运行没有 worker:直接取消等待并写终态。其余经 Redis 广播,运行所在的任意副本都会收到;
690
935
  * 运行已是孤儿(没有任何 worker 在执行)时直接写终态。
936
+ *
937
+ * A root conversation's stop stops only its own run: its background sub-agents keep working
938
+ * (agent map spec §6). A sub-agent's conversation (its owner, from the agent map) stops that
939
+ * sub-agent with every descendant (`RunControl.stopTree`); `run.not_active` when nothing in that
940
+ * subtree runs, else the sub-agent's latest run id.
691
941
  */
692
942
  async abort(orgId, conversationId, accountId) {
693
- await this.get(orgId, conversationId, accountId);
943
+ const conv = await this.get(orgId, conversationId, accountId);
944
+ if (conv.parentConversationId !== null) {
945
+ const latest = await this.db
946
+ .selectFrom("runs")
947
+ .select("id")
948
+ .where("conversation_id", "=", conversationId)
949
+ .orderBy("created_at", "desc")
950
+ .executeTakeFirst();
951
+ const n = await this.runs.stopTree(conversationId, accountId);
952
+ if (n === 0 || !latest)
953
+ throw new ApiError("run.not_active", "No active run to abort");
954
+ return latest.id;
955
+ }
694
956
  const run = await this.db
695
957
  .selectFrom("runs")
696
958
  .select(["id", "status"])
@@ -718,9 +980,15 @@ let ConversationsService = class ConversationsService {
718
980
  __decorate([
719
981
  Transactional({ propagation: "requires_new" })
720
982
  ], ConversationsService.prototype, "createIn", null);
983
+ __decorate([
984
+ Transactional()
985
+ ], ConversationsService.prototype, "markDeleted", null);
721
986
  __decorate([
722
987
  Transactional({ propagation: "requires_new" })
723
988
  ], ConversationsService.prototype, "postIn", null);
989
+ __decorate([
990
+ Transactional({ propagation: "mandatory" })
991
+ ], ConversationsService.prototype, "skipQuestionsIn", null);
724
992
  __decorate([
725
993
  Transactional({ propagation: "mandatory" })
726
994
  ], ConversationsService.prototype, "writeMessage", null);
@@ -739,6 +1007,10 @@ ConversationsService = __decorate([
739
1007
  __param(7, Inject(ConnectorContent)),
740
1008
  __param(8, Inject(AttachmentsService)),
741
1009
  __param(9, Inject(SkillInvoker)),
742
- __param(10, Inject(TransactionHost))
1010
+ __param(10, Inject(BackgroundTaskStopper)),
1011
+ __param(11, Inject(ConversationDevices)),
1012
+ __param(12, Inject(QuestionsService)),
1013
+ __param(13, Inject(KernelEvents)),
1014
+ __param(14, Inject(TransactionHost))
743
1015
  ], ConversationsService);
744
1016
  export { ConversationsService };