@nocobase/app-plugin-agents 2.0.0-beta.1 → 2.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/CHANGELOG.md +197 -0
  2. package/README.md +25 -5
  3. package/dist/client/chat/api.d.ts +6 -1
  4. package/dist/client/chat/api.d.ts.map +1 -1
  5. package/dist/client/chat/api.js +18 -0
  6. package/dist/client/chat/api.js.map +1 -1
  7. package/dist/client/chat/controller.d.ts +12 -0
  8. package/dist/client/chat/controller.d.ts.map +1 -1
  9. package/dist/client/chat/controller.js +65 -20
  10. package/dist/client/chat/controller.js.map +1 -1
  11. package/dist/client/chat/notices.d.ts +12 -0
  12. package/dist/client/chat/notices.d.ts.map +1 -0
  13. package/dist/client/chat/notices.js +15 -0
  14. package/dist/client/chat/notices.js.map +1 -0
  15. package/dist/client/chat/submissions.d.ts +16 -0
  16. package/dist/client/chat/submissions.d.ts.map +1 -1
  17. package/dist/client/chat/submissions.js +22 -0
  18. package/dist/client/chat/submissions.js.map +1 -1
  19. package/dist/client/chat/use-chat.d.ts.map +1 -1
  20. package/dist/client/chat/use-chat.js +1 -0
  21. package/dist/client/chat/use-chat.js.map +1 -1
  22. package/dist/client/chat.d.ts +1 -0
  23. package/dist/client/chat.d.ts.map +1 -1
  24. package/dist/client/chat.js +1 -0
  25. package/dist/client/chat.js.map +1 -1
  26. package/dist/client/components/page-container.js +1 -1
  27. package/dist/client/components/page-container.js.map +1 -1
  28. package/dist/client/components/route-child-page.d.ts +1 -1
  29. package/dist/client/components/route-child-page.d.ts.map +1 -1
  30. package/dist/client/components/route-child-page.js +18 -2
  31. package/dist/client/components/route-child-page.js.map +1 -1
  32. package/dist/client/components/route-overlay.d.ts +4 -1
  33. package/dist/client/components/route-overlay.d.ts.map +1 -1
  34. package/dist/client/components/route-overlay.js +32 -3
  35. package/dist/client/components/route-overlay.js.map +1 -1
  36. package/dist/client/components/ui/alert-dialog.d.ts +3 -1
  37. package/dist/client/components/ui/alert-dialog.d.ts.map +1 -1
  38. package/dist/client/components/ui/alert-dialog.js +2 -2
  39. package/dist/client/components/ui/alert-dialog.js.map +1 -1
  40. package/dist/client/components/unsaved-changes.d.ts.map +1 -1
  41. package/dist/client/components/unsaved-changes.js +17 -4
  42. package/dist/client/components/unsaved-changes.js.map +1 -1
  43. package/dist/client/components/use-route-overlay.d.ts +2 -9
  44. package/dist/client/components/use-route-overlay.d.ts.map +1 -1
  45. package/dist/client/components/use-route-overlay.js +5 -3
  46. package/dist/client/components/use-route-overlay.js.map +1 -1
  47. package/dist/client/lib/format.d.ts.map +1 -1
  48. package/dist/client/lib/format.js +1 -0
  49. package/dist/client/lib/format.js.map +1 -1
  50. package/dist/client/locales/de-DE.d.ts.map +1 -1
  51. package/dist/client/locales/de-DE.js +145 -109
  52. package/dist/client/locales/de-DE.js.map +1 -1
  53. package/dist/client/locales/en-US.d.ts +2 -0
  54. package/dist/client/locales/en-US.d.ts.map +1 -1
  55. package/dist/client/locales/en-US.js +4 -2
  56. package/dist/client/locales/en-US.js.map +1 -1
  57. package/dist/client/locales/es-ES.d.ts.map +1 -1
  58. package/dist/client/locales/es-ES.js +222 -186
  59. package/dist/client/locales/es-ES.js.map +1 -1
  60. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  61. package/dist/client/locales/fr-FR.js +154 -118
  62. package/dist/client/locales/fr-FR.js.map +1 -1
  63. package/dist/client/locales/id-ID.d.ts.map +1 -1
  64. package/dist/client/locales/id-ID.js +143 -107
  65. package/dist/client/locales/id-ID.js.map +1 -1
  66. package/dist/client/locales/index.d.ts.map +1 -1
  67. package/dist/client/locales/index.js +2 -0
  68. package/dist/client/locales/index.js.map +1 -1
  69. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  70. package/dist/client/locales/ja-JP.js +226 -190
  71. package/dist/client/locales/ja-JP.js.map +1 -1
  72. package/dist/client/locales/ko-KR.d.ts +5 -0
  73. package/dist/client/locales/ko-KR.d.ts.map +1 -0
  74. package/dist/client/locales/ko-KR.js +1319 -0
  75. package/dist/client/locales/ko-KR.js.map +1 -0
  76. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  77. package/dist/client/locales/pt-BR.js +216 -180
  78. package/dist/client/locales/pt-BR.js.map +1 -1
  79. package/dist/client/locales/ru-RU.d.ts +5 -0
  80. package/dist/client/locales/ru-RU.d.ts.map +1 -0
  81. package/dist/client/locales/ru-RU.js +1349 -0
  82. package/dist/client/locales/ru-RU.js.map +1 -0
  83. package/dist/client/locales/runWait.en-US.d.ts +2 -0
  84. package/dist/client/locales/runWait.en-US.d.ts.map +1 -1
  85. package/dist/client/locales/runWait.en-US.js +2 -0
  86. package/dist/client/locales/runWait.en-US.js.map +1 -1
  87. package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -1
  88. package/dist/client/locales/runWait.zh-CN.js +2 -0
  89. package/dist/client/locales/runWait.zh-CN.js.map +1 -1
  90. package/dist/client/locales/runtimes.en-US.d.ts +9 -0
  91. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  92. package/dist/client/locales/runtimes.en-US.js +11 -2
  93. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  94. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  95. package/dist/client/locales/runtimes.zh-CN.js +11 -2
  96. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  97. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  98. package/dist/client/locales/vi-VN.js +182 -146
  99. package/dist/client/locales/vi-VN.js.map +1 -1
  100. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  101. package/dist/client/locales/zh-CN.js +4 -2
  102. package/dist/client/locales/zh-CN.js.map +1 -1
  103. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  104. package/dist/client/locales/zh-TW.js +159 -123
  105. package/dist/client/locales/zh-TW.js.map +1 -1
  106. package/dist/client/pages/runtimes/quota-limit-setting.d.ts +12 -0
  107. package/dist/client/pages/runtimes/quota-limit-setting.d.ts.map +1 -0
  108. package/dist/client/pages/runtimes/quota-limit-setting.js +57 -0
  109. package/dist/client/pages/runtimes/quota-limit-setting.js.map +1 -0
  110. package/dist/client/pages/runtimes/quota.d.ts +3 -2
  111. package/dist/client/pages/runtimes/quota.d.ts.map +1 -1
  112. package/dist/client/pages/runtimes/quota.js +10 -4
  113. package/dist/client/pages/runtimes/quota.js.map +1 -1
  114. package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -1
  115. package/dist/client/pages/runtimes/runner-runs.js +2 -8
  116. package/dist/client/pages/runtimes/runner-runs.js.map +1 -1
  117. package/dist/client/pages/runtimes/runner-tools.d.ts.map +1 -1
  118. package/dist/client/pages/runtimes/runner-tools.js +7 -16
  119. package/dist/client/pages/runtimes/runner-tools.js.map +1 -1
  120. package/dist/client/pages/runtimes/workspace-diagnostics.js +3 -3
  121. package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -1
  122. package/dist/client/pages/usage/date-range-picker.d.ts.map +1 -1
  123. package/dist/client/pages/usage/date-range-picker.js +3 -1
  124. package/dist/client/pages/usage/date-range-picker.js.map +1 -1
  125. package/dist/client/routes.d.ts.map +1 -1
  126. package/dist/client/routes.js +7 -0
  127. package/dist/client/routes.js.map +1 -1
  128. package/dist/client/runs/format-wait.d.ts.map +1 -1
  129. package/dist/client/runs/format-wait.js +2 -0
  130. package/dist/client/runs/format-wait.js.map +1 -1
  131. package/dist/database/migrations/.manifest.json +20 -0
  132. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts +4 -0
  133. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts.map +1 -0
  134. package/dist/database/migrations/202611070001_ag_run_runner_pin.js +17 -0
  135. package/dist/database/migrations/202611070001_ag_run_runner_pin.js.map +1 -0
  136. package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts +4 -0
  137. package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts.map +1 -0
  138. package/dist/database/migrations/202611080001_ag_conversation_shares.js +25 -0
  139. package/dist/database/migrations/202611080001_ag_conversation_shares.js.map +1 -0
  140. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts +4 -0
  141. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts.map +1 -0
  142. package/dist/database/migrations/202611080002_ag_run_failure_params.js +17 -0
  143. package/dist/database/migrations/202611080002_ag_run_failure_params.js.map +1 -0
  144. package/dist/database/migrations/202611090001_ag_runner_preference.d.ts +9 -0
  145. package/dist/database/migrations/202611090001_ag_runner_preference.d.ts.map +1 -0
  146. package/dist/database/migrations/202611090001_ag_runner_preference.js +28 -0
  147. package/dist/database/migrations/202611090001_ag_runner_preference.js.map +1 -0
  148. package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts +4 -0
  149. package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts.map +1 -0
  150. package/dist/database/migrations/202611110001_ag_runner_quota_limits.js +17 -0
  151. package/dist/database/migrations/202611110001_ag_runner_quota_limits.js.map +1 -0
  152. package/dist/package.json +4 -2
  153. package/dist/server/composition.d.ts +9 -1
  154. package/dist/server/composition.d.ts.map +1 -1
  155. package/dist/server/composition.js +31 -2
  156. package/dist/server/composition.js.map +1 -1
  157. package/dist/server/core/agents/agent.service.d.ts +2 -1
  158. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  159. package/dist/server/core/agents/agent.service.js.map +1 -1
  160. package/dist/server/core/agents/agent.store.d.ts +2 -2
  161. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  162. package/dist/server/core/agents/agent.store.js +8 -2
  163. package/dist/server/core/agents/agent.store.js.map +1 -1
  164. package/dist/server/core/brief/brief.d.ts +10 -5
  165. package/dist/server/core/brief/brief.d.ts.map +1 -1
  166. package/dist/server/core/brief/brief.js +36 -13
  167. package/dist/server/core/brief/brief.js.map +1 -1
  168. package/dist/server/core/brief/index.d.ts +1 -1
  169. package/dist/server/core/brief/index.d.ts.map +1 -1
  170. package/dist/server/core/brief/index.js +1 -1
  171. package/dist/server/core/brief/index.js.map +1 -1
  172. package/dist/server/core/conversations/attachments.d.ts +6 -4
  173. package/dist/server/core/conversations/attachments.d.ts.map +1 -1
  174. package/dist/server/core/conversations/attachments.js +66 -22
  175. package/dist/server/core/conversations/attachments.js.map +1 -1
  176. package/dist/server/core/conversations/chat-settings.d.ts +1 -1
  177. package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
  178. package/dist/server/core/conversations/chat-settings.js +6 -0
  179. package/dist/server/core/conversations/chat-settings.js.map +1 -1
  180. package/dist/server/core/conversations/conversation.service.d.ts +3 -1
  181. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  182. package/dist/server/core/conversations/conversation.service.js +198 -18
  183. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  184. package/dist/server/core/conversations/conversation.store.d.ts +2 -0
  185. package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
  186. package/dist/server/core/conversations/conversation.store.js.map +1 -1
  187. package/dist/server/core/conversations/index.d.ts +1 -0
  188. package/dist/server/core/conversations/index.d.ts.map +1 -1
  189. package/dist/server/core/conversations/links.d.ts.map +1 -1
  190. package/dist/server/core/conversations/links.js +10 -5
  191. package/dist/server/core/conversations/links.js.map +1 -1
  192. package/dist/server/core/conversations/ports.d.ts +8 -2
  193. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  194. package/dist/server/core/conversations/shares.d.ts +38 -0
  195. package/dist/server/core/conversations/shares.d.ts.map +1 -0
  196. package/dist/server/core/conversations/shares.js +189 -0
  197. package/dist/server/core/conversations/shares.js.map +1 -0
  198. package/dist/server/core/reports/report.service.d.ts.map +1 -1
  199. package/dist/server/core/reports/report.service.js +24 -13
  200. package/dist/server/core/reports/report.service.js.map +1 -1
  201. package/dist/server/core/runs/access.d.ts +7 -1
  202. package/dist/server/core/runs/access.d.ts.map +1 -1
  203. package/dist/server/core/runs/access.js +51 -2
  204. package/dist/server/core/runs/access.js.map +1 -1
  205. package/dist/server/core/runs/claim.d.ts +22 -3
  206. package/dist/server/core/runs/claim.d.ts.map +1 -1
  207. package/dist/server/core/runs/claim.js +260 -42
  208. package/dist/server/core/runs/claim.js.map +1 -1
  209. package/dist/server/core/runs/eligibility.d.ts.map +1 -1
  210. package/dist/server/core/runs/eligibility.js +1 -0
  211. package/dist/server/core/runs/eligibility.js.map +1 -1
  212. package/dist/server/core/runs/extensions.d.ts +30 -2
  213. package/dist/server/core/runs/extensions.d.ts.map +1 -1
  214. package/dist/server/core/runs/extensions.js +18 -1
  215. package/dist/server/core/runs/extensions.js.map +1 -1
  216. package/dist/server/core/runs/git-credentials.d.ts.map +1 -1
  217. package/dist/server/core/runs/git-credentials.js +24 -2
  218. package/dist/server/core/runs/git-credentials.js.map +1 -1
  219. package/dist/server/core/runs/identity.d.ts.map +1 -1
  220. package/dist/server/core/runs/identity.js +9 -0
  221. package/dist/server/core/runs/identity.js.map +1 -1
  222. package/dist/server/core/runs/index.d.ts +3 -2
  223. package/dist/server/core/runs/index.d.ts.map +1 -1
  224. package/dist/server/core/runs/index.js +2 -1
  225. package/dist/server/core/runs/index.js.map +1 -1
  226. package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
  227. package/dist/server/core/runs/lifecycle.js +14 -0
  228. package/dist/server/core/runs/lifecycle.js.map +1 -1
  229. package/dist/server/core/runs/npm-credentials.d.ts +35 -0
  230. package/dist/server/core/runs/npm-credentials.d.ts.map +1 -0
  231. package/dist/server/core/runs/npm-credentials.js +83 -0
  232. package/dist/server/core/runs/npm-credentials.js.map +1 -0
  233. package/dist/server/core/runs/ports.d.ts +24 -3
  234. package/dist/server/core/runs/ports.d.ts.map +1 -1
  235. package/dist/server/core/runs/ports.js.map +1 -1
  236. package/dist/server/core/runs/preview.d.ts +1 -4
  237. package/dist/server/core/runs/preview.d.ts.map +1 -1
  238. package/dist/server/core/runs/preview.js +10 -5
  239. package/dist/server/core/runs/preview.js.map +1 -1
  240. package/dist/server/core/runs/quota-wait.d.ts +7 -0
  241. package/dist/server/core/runs/quota-wait.d.ts.map +1 -0
  242. package/dist/server/core/runs/quota-wait.js +56 -0
  243. package/dist/server/core/runs/quota-wait.js.map +1 -0
  244. package/dist/server/core/runs/run-data-purge.d.ts.map +1 -1
  245. package/dist/server/core/runs/run-data-purge.js +1 -0
  246. package/dist/server/core/runs/run-data-purge.js.map +1 -1
  247. package/dist/server/core/runs/run.service.d.ts +31 -5
  248. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  249. package/dist/server/core/runs/run.service.js +129 -35
  250. package/dist/server/core/runs/run.service.js.map +1 -1
  251. package/dist/server/core/runs/run.store.d.ts +24 -0
  252. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  253. package/dist/server/core/runs/run.store.js +44 -0
  254. package/dist/server/core/runs/run.store.js.map +1 -1
  255. package/dist/server/core/runs/sweeper.d.ts.map +1 -1
  256. package/dist/server/core/runs/sweeper.js +2 -0
  257. package/dist/server/core/runs/sweeper.js.map +1 -1
  258. package/dist/server/core/runs/transitions.d.ts +1 -0
  259. package/dist/server/core/runs/transitions.d.ts.map +1 -1
  260. package/dist/server/core/runs/transitions.js +15 -1
  261. package/dist/server/core/runs/transitions.js.map +1 -1
  262. package/dist/server/core/runs/workload.d.ts +2 -2
  263. package/dist/server/core/runs/workload.d.ts.map +1 -1
  264. package/dist/server/core/runs/workload.js +62 -9
  265. package/dist/server/core/runs/workload.js.map +1 -1
  266. package/dist/server/kernel/clock.d.ts +2 -0
  267. package/dist/server/kernel/clock.d.ts.map +1 -1
  268. package/dist/server/kernel/clock.js +14 -0
  269. package/dist/server/kernel/clock.js.map +1 -1
  270. package/dist/server/kernel/events.d.ts +4 -1
  271. package/dist/server/kernel/events.d.ts.map +1 -1
  272. package/dist/server/kernel/events.js.map +1 -1
  273. package/dist/server/locales/de-DE.js +3 -3
  274. package/dist/server/locales/de-DE.js.map +1 -1
  275. package/dist/server/locales/es-ES.js +6 -6
  276. package/dist/server/locales/es-ES.js.map +1 -1
  277. package/dist/server/locales/fr-FR.js +4 -4
  278. package/dist/server/locales/fr-FR.js.map +1 -1
  279. package/dist/server/locales/id-ID.js +5 -5
  280. package/dist/server/locales/id-ID.js.map +1 -1
  281. package/dist/server/locales/index.d.ts.map +1 -1
  282. package/dist/server/locales/index.js +2 -0
  283. package/dist/server/locales/index.js.map +1 -1
  284. package/dist/server/locales/ja-JP.d.ts.map +1 -1
  285. package/dist/server/locales/ja-JP.js +6 -6
  286. package/dist/server/locales/ja-JP.js.map +1 -1
  287. package/dist/server/locales/ko-KR.d.ts +5 -0
  288. package/dist/server/locales/ko-KR.d.ts.map +1 -0
  289. package/dist/server/locales/ko-KR.js +59 -0
  290. package/dist/server/locales/ko-KR.js.map +1 -0
  291. package/dist/server/locales/pt-BR.js +6 -6
  292. package/dist/server/locales/pt-BR.js.map +1 -1
  293. package/dist/server/locales/ru-RU.d.ts +5 -0
  294. package/dist/server/locales/ru-RU.d.ts.map +1 -0
  295. package/dist/server/locales/ru-RU.js +59 -0
  296. package/dist/server/locales/ru-RU.js.map +1 -0
  297. package/dist/server/locales/vi-VN.js +6 -6
  298. package/dist/server/locales/vi-VN.js.map +1 -1
  299. package/dist/server/locales/zh-TW.d.ts.map +1 -1
  300. package/dist/server/locales/zh-TW.js +6 -6
  301. package/dist/server/locales/zh-TW.js.map +1 -1
  302. package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
  303. package/dist/server/online/agent/persistence/store.js +3 -0
  304. package/dist/server/online/agent/persistence/store.js.map +1 -1
  305. package/dist/server/online/agent/runner/projection.d.ts +1 -1
  306. package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
  307. package/dist/server/online/agent/runner/projection.js +8 -1
  308. package/dist/server/online/agent/runner/projection.js.map +1 -1
  309. package/dist/server/online/files/input.d.ts +2 -2
  310. package/dist/server/online/files/input.d.ts.map +1 -1
  311. package/dist/server/online/files/input.js +5 -6
  312. package/dist/server/online/files/input.js.map +1 -1
  313. package/dist/server/online/files/kimi.d.ts.map +1 -1
  314. package/dist/server/online/files/kimi.js +2 -2
  315. package/dist/server/online/files/kimi.js.map +1 -1
  316. package/dist/server/online/files/service.d.ts +2 -1
  317. package/dist/server/online/files/service.d.ts.map +1 -1
  318. package/dist/server/online/files/service.js +11 -10
  319. package/dist/server/online/files/service.js.map +1 -1
  320. package/dist/server/providers/agents.d.ts.map +1 -1
  321. package/dist/server/providers/agents.js +5 -2
  322. package/dist/server/providers/agents.js.map +1 -1
  323. package/dist/server/routes/admin.d.ts +1 -0
  324. package/dist/server/routes/admin.d.ts.map +1 -1
  325. package/dist/server/routes/admin.js +41 -14
  326. package/dist/server/routes/admin.js.map +1 -1
  327. package/dist/server/routes/chat.d.ts.map +1 -1
  328. package/dist/server/routes/chat.js +107 -24
  329. package/dist/server/routes/chat.js.map +1 -1
  330. package/dist/server/routes/index.d.ts.map +1 -1
  331. package/dist/server/routes/index.js +8 -2
  332. package/dist/server/routes/index.js.map +1 -1
  333. package/dist/server/routes/run.js +1 -1
  334. package/dist/server/routes/run.js.map +1 -1
  335. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  336. package/dist/server/routes/runners/admin.js +3 -3
  337. package/dist/server/routes/runners/admin.js.map +1 -1
  338. package/dist/server/routes/runners/install.d.ts.map +1 -1
  339. package/dist/server/routes/runners/install.js +5 -0
  340. package/dist/server/routes/runners/install.js.map +1 -1
  341. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  342. package/dist/server/routes/runners/runner.js +13 -22
  343. package/dist/server/routes/runners/runner.js.map +1 -1
  344. package/dist/server/routes/runners/runs.d.ts +1 -1
  345. package/dist/server/routes/runners/runs.d.ts.map +1 -1
  346. package/dist/server/routes/runners/runs.js +20 -1
  347. package/dist/server/routes/runners/runs.js.map +1 -1
  348. package/dist/server/routes/schemas.d.ts +4 -0
  349. package/dist/server/routes/schemas.d.ts.map +1 -1
  350. package/dist/server/routes/schemas.js +31 -6
  351. package/dist/server/routes/schemas.js.map +1 -1
  352. package/dist/server/runners/runner.service.d.ts.map +1 -1
  353. package/dist/server/runners/runner.service.js +33 -9
  354. package/dist/server/runners/runner.service.js.map +1 -1
  355. package/dist/server/runners/runner.store.d.ts +1 -0
  356. package/dist/server/runners/runner.store.d.ts.map +1 -1
  357. package/dist/server/runners/runner.store.js +1 -0
  358. package/dist/server/runners/runner.store.js.map +1 -1
  359. package/dist/server/tokens.d.ts +1 -1
  360. package/dist/server/tokens.d.ts.map +1 -1
  361. package/dist/server/tokens.js.map +1 -1
  362. package/dist/shared/briefs.d.ts +2 -6
  363. package/dist/shared/briefs.d.ts.map +1 -1
  364. package/dist/shared/conversations.d.ts +34 -3
  365. package/dist/shared/conversations.d.ts.map +1 -1
  366. package/dist/shared/conversations.js +10 -2
  367. package/dist/shared/conversations.js.map +1 -1
  368. package/dist/shared/runners.d.ts +7 -3
  369. package/dist/shared/runners.d.ts.map +1 -1
  370. package/dist/shared/runners.js +20 -4
  371. package/dist/shared/runners.js.map +1 -1
  372. package/dist/shared/runs.d.ts +11 -3
  373. package/dist/shared/runs.d.ts.map +1 -1
  374. package/dist/shared/runs.js +2 -0
  375. package/dist/shared/runs.js.map +1 -1
  376. package/docs/conversation-sharing.md +55 -0
  377. package/package.json +18 -16
  378. package/skills/nocobase-app-plugin-agents/SKILL.md +5 -1
  379. package/skills/nocobase-app-plugin-agents/references/extension-points.md +5 -1
  380. package/skills/nocobase-app-plugin-agents/references/online-agent.md +6 -6
  381. package/skills/nocobase-app-plugin-agents/references/runners.md +1 -1
  382. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +2 -1
@@ -9,8 +9,11 @@
9
9
  * conversation. Anyone else gets 404, as if it did not exist. Uploads never sent are purged after
10
10
  * `CHAT_ATTACHMENT_ORPHAN_HOURS`.
11
11
  */
12
+ import { assertFileUploadSize, } from '@nocobase/app-plugin-file/server';
13
+ import { conversationAccess } from './shares.js';
14
+ import { messagesRepo } from './conversation.store.js';
12
15
  import { Readable } from 'node:stream';
13
- import { CHAT_ATTACHMENT_ORPHAN_HOURS, CHAT_ATTACHMENT_SIZE_MAX, CHAT_ATTACHMENTS_PER_MESSAGE_MAX, CONVERSATION_SUBJECT, isInlineImage, } from '../../../shared/conversations.js';
16
+ import { CHAT_ATTACHMENT_ORPHAN_HOURS, CHAT_ATTACHMENTS_PER_MESSAGE_MAX, CONVERSATION_SUBJECT, isInlineImage, } from '../../../shared/conversations.js';
14
17
  import { invalid, notFound, precondition, ProtocolError, } from '../../kernel/errors.js';
15
18
  export const CHAT_ATTACHMENTS = 'agChatAttachments';
16
19
  /** Required by the file repository; nothing is served there (the content route checks who may read). */
@@ -155,11 +158,8 @@ export function readAttachmentIds(value) {
155
158
  throw invalid(`At most ${CHAT_ATTACHMENTS_PER_MESSAGE_MAX} files per message.`, { field: 'attachmentIds' });
156
159
  return ids;
157
160
  }
158
- /** 413 `UPLOAD_TOO_LARGE`: a file over `CHAT_ATTACHMENT_SIZE_MAX`. */
159
- export function fileTooLarge() {
160
- return new ProtocolError('UPLOAD_TOO_LARGE', `A file may have at most ${CHAT_ATTACHMENT_SIZE_MAX} bytes.`, { maxBytes: CHAT_ATTACHMENT_SIZE_MAX });
161
- }
162
161
  export function createChatAttachments(deps) {
162
+ const uploadLimit = deps.limitForDisk();
163
163
  const now = deps.now ?? (() => new Date());
164
164
  const view = (row) => attachmentView(deps.basePath(), stored(row));
165
165
  /** The row, when the reader may read it; 404 otherwise. */
@@ -177,11 +177,29 @@ export function createChatAttachments(deps) {
177
177
  (reader.run.subjectKind !== CONVERSATION_SUBJECT ||
178
178
  reader.run.subjectId !== row.conversationId))
179
179
  throw notFound('Attachment');
180
- const conversation = await conn
181
- .repository('agConversations')
182
- .findOne({ filter: { id: row.conversationId } });
183
- if (!conversation || conversation.userId !== reader.userId)
184
- throw notFound('Attachment');
180
+ let access;
181
+ try {
182
+ access = await conversationAccess(conn, reader.userId, row.conversationId);
183
+ }
184
+ catch (error) {
185
+ if (error instanceof ProtocolError &&
186
+ error.code === 'CONVERSATION_NOT_FOUND')
187
+ throw notFound('Attachment');
188
+ throw error;
189
+ }
190
+ if (access.share) {
191
+ if (reader.run || !row.messageId)
192
+ throw notFound('Attachment');
193
+ const message = await messagesRepo(conn).findOne({
194
+ filter: (f) => f.and([
195
+ f.string('id').eq(row.messageId),
196
+ f.string('conversationId').eq(row.conversationId),
197
+ f.number('seq').lte(Number(access.share.cutoffSeq)),
198
+ ]),
199
+ });
200
+ if (!message)
201
+ throw notFound('Attachment');
202
+ }
185
203
  return row;
186
204
  }
187
205
  /** Deletes the row only while it is still attached to nothing; answers whether it did. */
@@ -199,23 +217,45 @@ export function createChatAttachments(deps) {
199
217
  new Set(ids).size !== ids.length)
200
218
  throw invalid('Send at most the allowed number of distinct attachments.');
201
219
  const rows = await findFiles(conn, ids);
220
+ // A withdrawn input can be sent with another Agent in the same owned conversation, without copying files.
221
+ const reused = rows.filter((row) => row.conversationId === target.conversationId &&
222
+ row.uploaderId === userId);
223
+ const withdrawn = reused.length
224
+ ? await conn
225
+ .repository('agConversationMessages')
226
+ .findMany({
227
+ filter: (f) => f.and([
228
+ f.string('conversationId').eq(target.conversationId),
229
+ f.or(reused.flatMap((row) => row.messageId ? [f.string('id').eq(row.messageId)] : [])),
230
+ f.json('metadata').path(['withdrawn']).eq(true),
231
+ ]),
232
+ })
233
+ : [];
234
+ const reusable = new Set(reused
235
+ .filter((row) => withdrawn.some((message) => message.id === row.messageId))
236
+ .map((row) => row.id));
202
237
  const ordered = ids.map((id) => {
203
238
  const row = rows.find((candidate) => candidate.id === id);
204
- if (!row || row.conversationId !== null || row.uploaderId !== userId)
239
+ if (!row ||
240
+ (row.conversationId !== null && !reusable.has(id)) ||
241
+ row.uploaderId !== userId)
205
242
  throw invalid(`File ${id} is not an upload of yours to send.`, {
206
243
  field: 'attachmentIds',
207
244
  fileId: id,
208
245
  });
209
246
  return row;
210
247
  });
211
- const bound = await files(conn).updateMany({
212
- filter: (f) => f.and([
213
- f.or(ids.map((id) => f.string('id').eq(id))),
214
- f.string('conversationId').eq(null),
215
- ]),
216
- values: { ...target, updatedAt: now() },
217
- });
218
- if (bound.updatedCount !== ids.length)
248
+ const fresh = ids.filter((id) => !reusable.has(id));
249
+ const bound = fresh.length
250
+ ? await files(conn).updateMany({
251
+ filter: (f) => f.and([
252
+ f.or(fresh.map((id) => f.string('id').eq(id))),
253
+ f.string('conversationId').eq(null),
254
+ ]),
255
+ values: { ...target, updatedAt: now() },
256
+ })
257
+ : { updatedCount: 0 };
258
+ if (bound.updatedCount !== fresh.length)
219
259
  throw invalid('An upload was already attached to another message.');
220
260
  return ordered.map(stored);
221
261
  },
@@ -231,9 +271,9 @@ export function createChatAttachments(deps) {
231
271
  },
232
272
  };
233
273
  const service = {
274
+ uploadLimit,
234
275
  async upload(userId, file) {
235
- if (file.size > CHAT_ATTACHMENT_SIZE_MAX)
236
- throw fileTooLarge();
276
+ assertFileUploadSize(file, uploadLimit);
237
277
  const id = await deps.storage.store(file, userId);
238
278
  const row = await findFile(deps.tx.read(), id);
239
279
  if (!row)
@@ -250,7 +290,11 @@ export function createChatAttachments(deps) {
250
290
  },
251
291
  async content(reader, id, conn) {
252
292
  const row = await readable(conn ?? deps.tx.read(), reader, id);
253
- return { attachment: view(row), body: await deps.storage.stream(row) };
293
+ return {
294
+ attachment: view(row),
295
+ body: await deps.storage.stream(row),
296
+ uploadLimit: deps.limitForDisk(row.disk),
297
+ };
254
298
  },
255
299
  async images(conversationId, ids, maxBytes) {
256
300
  const rows = await findFiles(deps.tx.read(), ids);
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../../server/core/conversations/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,aAAa,GAEd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,wGAAwG;AACxG,MAAM,CAAC,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AAE3E,wCAAwC;AACxC,MAAM,WAAW,GAAG,GAAG,CAAC;AAoFxB,SAAS,gBAAgB;IACvB,OAAO,YAAY,CACjB,iBAAiB,EACjB,mFAAmF,CACpF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CACnC,IAAyB;IAEzB,MAAM,KAAK,GAAG,GAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,MAAM,gBAAgB,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU;gBAAE,MAAM,gBAAgB,EAAE,CAAC;YAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU;iBAChC,UAAU,CAAC,gBAAgB,EAAE;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,UAAU,EAAE,4BAA4B;gBACxC,MAAM,EAAE;oBACN,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE;oBACjD,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;iBACd;aACF,CAAC;iBACD,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACvB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QAChE,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAA+B,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAqED,SAAS,KAAK,CAAC,IAAwB;IACrC,OAAO,IAAI,CAAC,UAAU,CAAuB,gBAAgB,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,IAAI,GAAG,kEAAkE,CAAC;AAEhF,4GAA4G;AAC5G,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAwB,EACxB,EAAU;IAEV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,IAAwB,EACxB,GAAsB;IAEtB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,EAAU;IAC5D,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,+BAA+B,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC;AACzG,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,IAAsB;IAEtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,UAAU;QACV,WAAW,EAAE,GAAG,UAAU,gBAAgB;QAC1C,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,GAAyB;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAa,EAAsB,EAAE;QACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,OAAO,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACzE,CAAC,CAAC;gBACE;oBACE,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACrD,QAAQ,EACN,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;wBACjC,CAAC,CAAC,MAAM,CAAC,QAAQ;wBACjB,CAAC,CAAC,0BAA0B;oBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;iBAC/B;aACF;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;QAE1E,MAAM,OAAO,CAAC,2CAA2C,EAAE;YACzD,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;IACL,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,GAAG,gCAAgC;QAC/C,MAAM,OAAO,CACX,WAAW,gCAAgC,qBAAqB,EAChE,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,aAAa,CACtB,kBAAkB,EAClB,2BAA2B,wBAAwB,SAAS,EAC5D,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAI5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,GAAyB,EAAqB,EAAE,CAC5D,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/C,2DAA2D;IAC3D,KAAK,UAAU,QAAQ,CACrB,IAAwB,EACxB,MAAwB,EACxB,EAAU;QAEV,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YAChC,+DAA+D;YAC/D,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM;gBAChD,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IACE,MAAM,CAAC,GAAG;YACV,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,KAAK,oBAAoB;gBAC9C,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,cAAc,CAAC;YAE9C,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,IAAI;aAC5B,UAAU,CAAiC,iBAAiB,CAAC;aAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YACxD,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0FAA0F;IAC1F,KAAK,UAAU,kBAAkB,CAC/B,IAAwB,EACxB,EAAU;QAEV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SACtE,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAwB;QACjC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,IACE,GAAG,CAAC,MAAM,GAAG,gCAAgC;gBAC7C,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM;gBAEhC,MAAM,OAAO,CACX,0DAA0D,CAC3D,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM;oBAClE,MAAM,OAAO,CAAC,QAAQ,EAAE,qCAAqC,EAAE;wBAC7D,KAAK,EAAE,eAAe;wBACtB,MAAM,EAAE,EAAE;qBACX,CAAC,CAAC;gBACL,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;gBACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;oBACJ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5C,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;iBACpC,CAAC;gBACJ,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;aACxC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM;gBACnC,MAAM,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACtE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc;YAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,KAAK,IAAI,EAAE;gBAChB,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,OAAO,GAA0B;QACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI;YACvB,IAAI,IAAI,CAAC,IAAI,GAAG,wBAAwB;gBAAE,MAAM,YAAY,EAAE,CAAC;YAC/D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI;gBAClE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/B,IAAI,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI;YAC5B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/D,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACzE,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ;YACxC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GAA8C,EAAE,CAAC;YAC7D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,IACE,CAAC,GAAG;oBACJ,GAAG,CAAC,cAAc,KAAK,cAAc;oBACrC,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;oBACrC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ;oBAE3B,SAAS;gBACX,MAAM,CAAC,IAAI,CAAC;oBACV,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC1D,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;iBACpC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,4BAA4B,GAAG,SAAS,CAAC;YACvE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBACtC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;gBAClD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;gBACvE,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YACH,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,+FAA+F;YAC/F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,MAAM;oBAAE,MAAM;gBACvD,uDAAuD;gBACvD,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAAE,SAAS;gBACxD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../../server/core/conversations/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,oBAAoB,GAErB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,oBAAoB,EACpB,aAAa,GAEd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,wGAAwG;AACxG,MAAM,CAAC,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AAE3E,wCAAwC;AACxC,MAAM,WAAW,GAAG,GAAG,CAAC;AAoFxB,SAAS,gBAAgB;IACvB,OAAO,YAAY,CACjB,iBAAiB,EACjB,mFAAmF,CACpF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CACnC,IAAyB;IAEzB,MAAM,KAAK,GAAG,GAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,MAAM,gBAAgB,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU;gBAAE,MAAM,gBAAgB,EAAE,CAAC;YAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU;iBAChC,UAAU,CAAC,gBAAgB,EAAE;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,UAAU,EAAE,4BAA4B;gBACxC,MAAM,EAAE;oBACN,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE;oBACjD,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,KAAK;iBACd;aACF,CAAC;iBACD,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACvB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QAChE,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAA+B,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAyED,SAAS,KAAK,CAAC,IAAwB;IACrC,OAAO,IAAI,CAAC,UAAU,CAAuB,gBAAgB,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,IAAI,GAAG,kEAAkE,CAAC;AAEhF,4GAA4G;AAC5G,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAwB,EACxB,EAAU;IAEV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,IAAwB,EACxB,GAAsB;IAEtB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,EAAU;IAC5D,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,+BAA+B,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC;AACzG,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,IAAsB;IAEtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,UAAU;QACV,WAAW,EAAE,GAAG,UAAU,gBAAgB;QAC1C,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,GAAyB;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAa,EAAsB,EAAE;QACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,OAAO,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACzE,CAAC,CAAC;gBACE;oBACE,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACrD,QAAQ,EACN,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;wBACjC,CAAC,CAAC,MAAM,CAAC,QAAQ;wBACjB,CAAC,CAAC,0BAA0B;oBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;iBAC/B;aACF;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;QAE1E,MAAM,OAAO,CAAC,2CAA2C,EAAE;YACzD,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;IACL,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,GAAG,gCAAgC;QAC/C,MAAM,OAAO,CACX,WAAW,gCAAgC,qBAAqB,EAChE,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAI5D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,GAAyB,EAAqB,EAAE,CAC5D,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/C,2DAA2D;IAC3D,KAAK,UAAU,QAAQ,CACrB,IAAwB,EACxB,MAAwB,EACxB,EAAU;QAEV,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YAChC,+DAA+D;YAC/D,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM;gBAChD,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IACE,MAAM,CAAC,GAAG;YACV,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,KAAK,oBAAoB;gBAC9C,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,cAAc,CAAC;YAE9C,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,kBAAkB,CAC/B,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,GAAG,CAAC,cAAc,CACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,aAAa;gBAC9B,KAAK,CAAC,IAAI,KAAK,wBAAwB;gBAEvC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS;gBAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC/C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;oBACJ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;oBAChC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;oBACjD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAM,CAAC,SAAS,CAAC,CAAC;iBACrD,CAAC;aACL,CAAC,CAAC;YACH,IAAI,CAAC,OAAO;gBAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0FAA0F;IAC1F,KAAK,UAAU,kBAAkB,CAC/B,IAAwB,EACxB,EAAU;QAEV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SACtE,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAwB;QACjC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,IACE,GAAG,CAAC,MAAM,GAAG,gCAAgC;gBAC7C,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM;gBAEhC,MAAM,OAAO,CACX,0DAA0D,CAC3D,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxC,0GAA0G;YAC1G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;gBAC5C,GAAG,CAAC,UAAU,KAAK,MAAM,CAC5B,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM;gBAC7B,CAAC,CAAC,MAAM,IAAI;qBACP,UAAU,CACT,wBAAwB,CACzB;qBACA,QAAQ,CAAC;oBACR,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;wBACJ,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC;wBACpD,CAAC,CAAC,EAAE,CACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACrB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACxD,CACF;wBACD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;qBAChD,CAAC;iBACL,CAAC;gBACN,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,MAAM;iBACH,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,CAC1D;iBACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CACxB,CAAC;YACF,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,IACE,CAAC,GAAG;oBACJ,CAAC,GAAG,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClD,GAAG,CAAC,UAAU,KAAK,MAAM;oBAEzB,MAAM,OAAO,CAAC,QAAQ,EAAE,qCAAqC,EAAE;wBAC7D,KAAK,EAAE,eAAe;wBACtB,MAAM,EAAE,EAAE;qBACX,CAAC,CAAC;gBACL,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;gBACxB,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;oBAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;wBACJ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC9C,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;qBACpC,CAAC;oBACJ,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;iBACxC,CAAC;gBACJ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM;gBACrC,MAAM,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACtE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc;YAChC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,KAAK,IAAI,EAAE;gBAChB,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,OAAO,GAA0B;QACrC,WAAW;QACX,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI;YACvB,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACxC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI;gBAClE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/B,IAAI,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI;YAC5B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;gBACrB,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;gBACpC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;aACzC,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ;YACxC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GAA8C,EAAE,CAAC;YAC7D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,IACE,CAAC,GAAG;oBACJ,GAAG,CAAC,cAAc,KAAK,cAAc;oBACrC,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;oBACrC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ;oBAE3B,SAAS;gBACX,MAAM,CAAC,IAAI,CAAC;oBACV,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC1D,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;iBACpC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,4BAA4B,GAAG,SAAS,CAAC;YACvE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBACtC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;gBAClD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;gBACvE,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YACH,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,+FAA+F;YAC/F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,MAAM;oBAAE,MAAM;gBACvD,uDAAuD;gBACvD,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAAE,SAAS;gBACxD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Who new conversations go to: the team's system default chat agent (`agSettings`, key `chat`) and each person's own
3
- * default (`agChatPreferences`).
3
+ * default (`agChatPreferences`), which also keeps the kind of runner their runs go to first (`runnerPreference`).
4
4
  */
5
5
  import type { DatabaseConnection } from '@nocobase/db';
6
6
  import { z } from 'zod';
@@ -1 +1 @@
1
- {"version":3,"file":"chat-settings.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAS3D,CAAC;AAEb,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CASrD,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,yEAAyE;IACzE,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,WAAW,CACT,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5B,yDAAyD;IACzD,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,GAAG,mBAAmB,CAkHtB"}
1
+ {"version":3,"file":"chat-settings.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAc3D,CAAC;AAEb,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CASrD,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,yEAAyE;IACzE,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,WAAW,CACT,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5B,yDAAyD;IACzD,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,GAAG,mBAAmB,CAqHtB"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { RUNNER_PREFERENCES, toRunnerPreference, } from '../../../shared/conversations.js';
2
3
  import { forbidden, invalid } from '../../kernel/errors.js';
3
4
  import { asJson, jsonObject } from '../../kernel/values.js';
4
5
  import { findAgent } from '../agents/index.js';
@@ -12,6 +13,9 @@ export const ChatPreferencesPatchSchema = z
12
13
  .max(64)
13
14
  .nullable()
14
15
  .describe('The default agent identifier.'),
16
+ runnerPreference: z
17
+ .enum(RUNNER_PREFERENCES)
18
+ .describe('Which kind of runner runs queued from now on go to first: auto, personal or team.'),
15
19
  })
16
20
  .partial();
17
21
  export const ChatSettingsPatchSchema = z
@@ -39,6 +43,7 @@ export function createChatSettingsService(deps) {
39
43
  const row = await preferencesRepo(conn).findOne({ filter: { userId } });
40
44
  return {
41
45
  defaultAgentId: row?.defaultAgentId ?? null,
46
+ runnerPreference: toRunnerPreference(row?.runnerPreference),
42
47
  };
43
48
  }
44
49
  async function validateOnlineDefault(patch) {
@@ -103,6 +108,7 @@ export function createChatSettingsService(deps) {
103
108
  }
104
109
  const values = {
105
110
  defaultAgentId: next.defaultAgentId,
111
+ runnerPreference: next.runnerPreference === 'auto' ? null : next.runnerPreference,
106
112
  updatedAt: clock.now().toISOString(),
107
113
  };
108
114
  const existing = await preferencesRepo(conn).findOne({
@@ -1 +1 @@
1
- {"version":3,"file":"chat-settings.js","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-settings.js","sourceRoot":"","sources":["../../../../server/core/conversations/chat-settings.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ import { type ConversationRecord } from './conversation.store.js';
12
12
  import type { ConversationService } from './ports.js';
13
13
  import type { AppUIMessage } from '../../../shared/online-agent.js';
14
14
  export interface ConversationServiceDeps {
15
+ /** Reuse the native backend's registered public tool projections, without an executable session facade. */
16
+ readonly nativeHistory?: (messages: unknown[]) => Promise<AppUIMessage[]>;
15
17
  readonly nativeNotice?: (unit: Tx, record: ConversationRecord, id: string, parts: AppUIMessage['parts']) => Promise<unknown>;
16
18
  readonly tx: TxRunner;
17
19
  readonly measure?: (phase: string, durationMs: number) => void;
@@ -20,7 +22,7 @@ export interface ConversationServiceDeps {
20
22
  readonly agents: Pick<AgentService, 'mayInvoke' | 'get' | 'list'>;
21
23
  readonly runners: Pick<RunnerService, 'list' | 'all'>;
22
24
  readonly eligibility: Pick<ClaimEligibility, 'canClaim' | 'runnersFor' | 'prepare'>;
23
- readonly runs: Pick<RunService, 'enqueue' | 'cancel' | 'withdrawQueued' | 'get' | 'detail'>;
25
+ readonly runs: Pick<RunService, 'enqueue' | 'cancel' | 'withdrawQueued' | 'get' | 'detail' | 'queueWait'>;
24
26
  readonly people: People;
25
27
  readonly settings: ChatSettingsService;
26
28
  readonly contextKinds: PageContextKinds;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.service.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/conversation.service.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AA+D3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAQnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAQL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAGhB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAYL,KAAK,kBAAkB,EAGxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAIV,mBAAmB,EAGpB,MAAM,YAAY,CAAC;AAapB,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,iCAAiC,CAAC;AAK/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,IAAI,EAAE,EAAE,EACR,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,IAAI,CACxB,gBAAgB,EAChB,UAAU,GAAG,YAAY,GAAG,SAAS,CACtC,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,IAAI,CACjB,UAAU,EACV,SAAS,GAAG,QAAQ,GAAG,gBAAgB,GAAG,KAAK,GAAG,QAAQ,CAC3D,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,OAAO,KACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAC3C,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AA6LD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,uBAAuB,GAC5B,mBAAmB,CAm9ErB"}
1
+ {"version":3,"file":"conversation.service.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/conversation.service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ import { conversationAccess, createConversationShares, sharesRepo, } from './shares.js';
2
+ import { runnerUIPage } from '../../online/agent/runner/projection.js';
3
+ import { NativeMessages } from '../../online/agent/messages/projection.js';
4
+ import { OnlineAgentConfigurator } from '../../online/agent/configuration.js';
1
5
  import { outputBlock, TERMINAL_RUN_STATUSES } from '@nocobase/agent-protocol';
2
6
  import { historicalPageContext, hasContent, renderPageContext, } from './page-context.js';
3
7
  import { nativeExecutionStatus, runnerBinding, } from '../../online/agent/persistence/state.js';
@@ -206,6 +210,12 @@ export function createConversationService(deps) {
206
210
  return workspace.resolve(conn, conversation, prepared);
207
211
  }
208
212
  const sources = createSources();
213
+ const shares = createConversationShares({
214
+ tx,
215
+ ids,
216
+ people: deps.people,
217
+ now,
218
+ });
209
219
  const links = createConversationLinks({
210
220
  tx,
211
221
  ids,
@@ -394,6 +404,9 @@ export function createConversationService(deps) {
394
404
  effort: typeof jsonObject(record.metadata).effort === 'string'
395
405
  ? jsonObject(record.metadata).effort
396
406
  : null,
407
+ wait: summary.mode === 'runner' && summary.run?.status === 'queued'
408
+ ? await deps.runs.queueWait(summary.run.id, record.runnerId)
409
+ : null,
397
410
  availability: await availabilityFor(conn, agent, record.userId),
398
411
  canFallback: Boolean(target),
399
412
  canRestore: !runnerBinding(record.metadata) &&
@@ -402,7 +415,48 @@ export function createConversationService(deps) {
402
415
  }
403
416
  async function detail(userId, id) {
404
417
  const conn = tx.read();
405
- return detailOf(conn, await owned(conn, userId, id));
418
+ const { record, share } = await conversationAccess(conn, userId, id);
419
+ if (!share)
420
+ return detailOf(conn, record);
421
+ // Whitelist snapshot fields: no latest runner, project, execution, usage, wait or owner attention.
422
+ return {
423
+ id,
424
+ title: share.title,
425
+ titleSource: 'user',
426
+ category: 'chat',
427
+ showInChatList: false,
428
+ source: 'panel',
429
+ mode: record.mode,
430
+ agent: jsonObject(record.metadata).onlineAgent
431
+ ? {
432
+ id: 'online',
433
+ name: 'Online agent',
434
+ nameText: null,
435
+ avatar: null,
436
+ archived: false,
437
+ }
438
+ : {
439
+ ...agentRef(record.agentId, record.agentId ? await findAgent(conn, record.agentId) : null),
440
+ avatar: null,
441
+ archived: false,
442
+ },
443
+ fallbackFrom: null,
444
+ read: true,
445
+ lastMessageAt: share.snapshotAt,
446
+ archivedAt: null,
447
+ createdAt: record.createdAt,
448
+ updatedAt: share.updatedAt,
449
+ run: null,
450
+ lastSeq: Number(share.cutoffSeq),
451
+ links: [],
452
+ availability: { online: false, reason: null, onlineRunners: 0 },
453
+ canFallback: false,
454
+ canRestore: false,
455
+ snapshot: {
456
+ cutoffSeq: Number(share.cutoffSeq),
457
+ snapshotAt: share.snapshotAt,
458
+ },
459
+ };
406
460
  }
407
461
  // -------------------------------------------------------------------------------------------------------------------
408
462
  // Writing
@@ -742,6 +796,9 @@ export function createConversationService(deps) {
742
796
  const released = deps.attachments
743
797
  ? await deps.attachments.release(unit.conn, record.id)
744
798
  : async () => { };
799
+ await sharesRepo(unit.conn).deleteMany({
800
+ filter: { conversationId: record.id },
801
+ });
745
802
  await messagesRepo(unit.conn).deleteMany({
746
803
  filter: { conversationId: record.id },
747
804
  });
@@ -1100,6 +1157,35 @@ export function createConversationService(deps) {
1100
1157
  messageId: `runner:${run.id}`,
1101
1158
  revision: Number(answered.seq) + 1,
1102
1159
  });
1160
+ // Stop ends this turn; messages the Agent never acknowledged retain their identity in the next one.
1161
+ // A queued withdrawal or system cancellation must not start more work.
1162
+ if (run.status === 'cancelled' &&
1163
+ run.cancelRequestedAt !== null &&
1164
+ run.cancelledById === record.userId &&
1165
+ record.mode === 'runner' &&
1166
+ record.agentId === run.agentId) {
1167
+ const queued = await messagesRepo(unit.conn).findMany({
1168
+ filter: (f) => f.and([
1169
+ f.string('conversationId').eq(record.id),
1170
+ f.string('runId').eq(run.id),
1171
+ f.string('role').eq('user'),
1172
+ f.json('metadata').path(['queued']).eq(true),
1173
+ ]),
1174
+ sort: (sort) => sort.field('seq').asc(),
1175
+ });
1176
+ const pending = queued.filter((message) => {
1177
+ const metadata = metadataOf(message);
1178
+ return !metadata.pickedUp && !metadata.withdrawn;
1179
+ });
1180
+ if (pending.length) {
1181
+ await wake(unit, record, pending);
1182
+ for (const message of pending)
1183
+ changed(unit, record, {
1184
+ messageId: message.id,
1185
+ revision: Number(message.seq),
1186
+ });
1187
+ }
1188
+ }
1103
1189
  await attend(unit, record.id, run);
1104
1190
  },
1105
1191
  },
@@ -1328,6 +1414,81 @@ export function createConversationService(deps) {
1328
1414
  }
1329
1415
  const service = {
1330
1416
  binding,
1417
+ shares,
1418
+ async snapshotMessages(userId, id, query) {
1419
+ const conn = tx.read();
1420
+ const { record, share } = await conversationAccess(conn, userId, id);
1421
+ if (!share)
1422
+ return null;
1423
+ const cutoff = Number(share.cutoffSeq);
1424
+ let page;
1425
+ if (record.mode === 'runner' || !jsonObject(record.metadata).onlineAgent)
1426
+ page = await runnerUIPage(tx, id, cutoff, query, deps.basePath?.() ?? '', cutoff);
1427
+ else {
1428
+ const rows = await messagesRepo(conn).findMany({
1429
+ filter: (f) => f.and([
1430
+ f.string('conversationId').eq(id),
1431
+ f.number('seq').lte(cutoff),
1432
+ ...(query.ids
1433
+ ? [f.or(query.ids.map((key) => f.string('id').eq(key)))]
1434
+ : []),
1435
+ ...(query.before !== undefined
1436
+ ? [f.number('seq').lt(query.before)]
1437
+ : []),
1438
+ ...(query.after !== undefined
1439
+ ? [f.number('seq').gt(query.after)]
1440
+ : []),
1441
+ ]),
1442
+ sort: (s) => query.after !== undefined || query.ids
1443
+ ? s.field('seq').asc()
1444
+ : s.field('seq').desc(),
1445
+ limit: query.ids ? query.ids.length : query.limit + 1,
1446
+ });
1447
+ const hasMore = !query.ids && rows.length > query.limit;
1448
+ const selected = rows.slice(0, query.ids ? rows.length : query.limit);
1449
+ if (query.after === undefined && !query.ids)
1450
+ selected.reverse();
1451
+ const native = new NativeMessages(new OnlineAgentConfigurator());
1452
+ page = {
1453
+ items: selected.length
1454
+ ? await (deps.nativeHistory ??
1455
+ (async (values) => native.public(await native.validate(values))))(selected.map((row) => jsonObject(row.content).original))
1456
+ : [],
1457
+ lastSeq: cutoff,
1458
+ hasMore,
1459
+ ...(query.after !== undefined && hasMore && selected.length
1460
+ ? { nextAfter: Number(selected.at(-1).seq) }
1461
+ : {}),
1462
+ };
1463
+ }
1464
+ for (const message of page.items) {
1465
+ if (message.metadata) {
1466
+ delete message.metadata.queue;
1467
+ delete message.metadata.executionId;
1468
+ delete message.metadata.turnId;
1469
+ }
1470
+ // A shared transcript contains historical content; linked records are always resolved as this viewer.
1471
+ if (message.metadata?.context) {
1472
+ const context = message.metadata.context;
1473
+ message.metadata.context = await deps.contextKinds.resolve(conn, userId, {
1474
+ route: '',
1475
+ items: context.items.map(({ kind, id }) => ({ kind, id })),
1476
+ });
1477
+ }
1478
+ const indexes = message.parts.flatMap((part, index) => part.type === 'data-turn' || part.type === 'data-phase'
1479
+ ? []
1480
+ : [index]);
1481
+ if (message.metadata?.sourceRecords)
1482
+ message.metadata.sourceRecords = message.metadata.sourceRecords
1483
+ .filter((source) => indexes.includes(source.partIndex))
1484
+ .map((source) => ({
1485
+ ...source,
1486
+ partIndex: indexes.indexOf(source.partIndex),
1487
+ }));
1488
+ message.parts = indexes.map((index) => message.parts[index]);
1489
+ }
1490
+ return page;
1491
+ },
1331
1492
  contextKinds: deps.contextKinds,
1332
1493
  sources,
1333
1494
  ownedTitles,
@@ -1607,7 +1768,7 @@ export function createConversationService(deps) {
1607
1768
  sendRealtime: (userId, id, request, input) => sendMessage(userId, id, request, input),
1608
1769
  async withdraw(userId, id, messageId) {
1609
1770
  await tx.run(async (unit) => {
1610
- const record = await lockOwned(unit, userId, id, true);
1771
+ let record = await owned(unit.conn, userId, id);
1611
1772
  const message = await messagesRepo(unit.conn).findOne({
1612
1773
  filter: { id: messageId, conversationId: id },
1613
1774
  });
@@ -1616,25 +1777,44 @@ export function createConversationService(deps) {
1616
1777
  const metadata = jsonObject(message.metadata);
1617
1778
  if (metadata.withdrawn)
1618
1779
  return;
1619
- // Taken back only while no runner has it: one conditional update, which a delivery racing it cannot both
1620
- // pass (`markDelivered` updates only an input not handled).
1621
- const taken = !metadata.queued ||
1622
- metadata.pickedUp ||
1623
- typeof metadata.inputId !== 'string' ||
1624
- (await inputsRepo(unit.conn).updateMany({
1625
- filter: (f) => f.and([
1626
- f.string('id').eq(metadata.inputId),
1627
- f.date('deliveredAt').empty(),
1628
- f.date('handledAt').empty(),
1629
- ]),
1630
- values: { handledAt: now() },
1631
- })).updatedCount !== 1;
1632
- if (taken)
1633
- throw conversationConflict('messageTaken', 'The agent already has this message.');
1780
+ if (!metadata.queued && message.runId) {
1781
+ // Match claim's run-before-conversation order. An initial turn has no queued-follow-up marker.
1782
+ // End only a still-unclaimed run, using the existing guarded queued withdrawal. If claim wins, the transaction rolls back and the running turn is kept.
1783
+ const run = await findRunRecord(unit.conn, message.runId);
1784
+ if (!run || run.status !== 'queued' || run.runnerId !== null)
1785
+ throw conversationConflict('messageTaken', 'The agent already has this message.');
1786
+ const ended = await deps.runs.withdrawQueued({
1787
+ subject: subjectOf(id),
1788
+ agentId: record.agentId,
1789
+ actorUserId: userId,
1790
+ byUserId: userId,
1791
+ }, unit);
1792
+ if (!ended.some((run) => run.id === message.runId))
1793
+ throw conversationConflict('messageTaken', 'The agent already has this message.');
1794
+ record = await lockOwned(unit, userId, id, true);
1795
+ }
1796
+ else {
1797
+ record = await lockOwned(unit, userId, id, true);
1798
+ // Taken back only while no runner has it: one conditional update, which a delivery racing it cannot both
1799
+ // pass (`markDelivered` updates only an input not handled).
1800
+ const taken = !metadata.queued ||
1801
+ metadata.pickedUp ||
1802
+ typeof metadata.inputId !== 'string' ||
1803
+ (await inputsRepo(unit.conn).updateMany({
1804
+ filter: (f) => f.and([
1805
+ f.string('id').eq(metadata.inputId),
1806
+ f.date('deliveredAt').empty(),
1807
+ f.date('handledAt').empty(),
1808
+ ]),
1809
+ values: { handledAt: now() },
1810
+ })).updatedCount !== 1;
1811
+ if (taken)
1812
+ throw conversationConflict('messageTaken', 'The agent already has this message.');
1813
+ }
1634
1814
  await messagesRepo(unit.conn).updateMany({
1635
1815
  filter: { id: message.id },
1636
1816
  values: {
1637
- metadata: asJson({ ...metadata, withdrawn: true }),
1817
+ metadata: asJson({ ...metadata, queued: true, withdrawn: true }),
1638
1818
  updatedAt: now(),
1639
1819
  },
1640
1820
  });