@nocobase/app-plugin-agents 0.1.0-beta.8 → 1.0.0-beta.15

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 (835) hide show
  1. package/CHANGELOG.md +304 -0
  2. package/README.md +94 -51
  3. package/dist/client/api/client.d.ts +25 -19
  4. package/dist/client/api/client.d.ts.map +1 -1
  5. package/dist/client/api/client.js +23 -24
  6. package/dist/client/api/client.js.map +1 -1
  7. package/dist/client/api/keys.d.ts +4 -1
  8. package/dist/client/api/keys.d.ts.map +1 -1
  9. package/dist/client/api/keys.js +4 -1
  10. package/dist/client/api/keys.js.map +1 -1
  11. package/dist/client/api/runners.d.ts +8 -4
  12. package/dist/client/api/runners.d.ts.map +1 -1
  13. package/dist/client/api/runners.js +9 -0
  14. package/dist/client/api/runners.js.map +1 -1
  15. package/dist/client/chat/ai-form.d.ts +13 -0
  16. package/dist/client/chat/ai-form.d.ts.map +1 -0
  17. package/dist/client/chat/ai-form.js +57 -0
  18. package/dist/client/chat/ai-form.js.map +1 -0
  19. package/dist/client/chat/api.d.ts +16 -14
  20. package/dist/client/chat/api.d.ts.map +1 -1
  21. package/dist/client/chat/api.js +85 -18
  22. package/dist/client/chat/api.js.map +1 -1
  23. package/dist/client/chat/client-id.d.ts +3 -0
  24. package/dist/client/chat/client-id.d.ts.map +1 -0
  25. package/dist/client/chat/client-id.js +17 -0
  26. package/dist/client/chat/client-id.js.map +1 -0
  27. package/dist/client/chat/consultation-identity.d.ts +7 -0
  28. package/dist/client/chat/consultation-identity.d.ts.map +1 -0
  29. package/dist/client/chat/consultation-identity.js +39 -0
  30. package/dist/client/chat/consultation-identity.js.map +1 -0
  31. package/dist/client/chat/context-model.d.ts +21 -3
  32. package/dist/client/chat/context-model.d.ts.map +1 -1
  33. package/dist/client/chat/context-model.js +33 -4
  34. package/dist/client/chat/context-model.js.map +1 -1
  35. package/dist/client/chat/controller.d.ts +83 -0
  36. package/dist/client/chat/controller.d.ts.map +1 -0
  37. package/dist/client/chat/controller.js +767 -0
  38. package/dist/client/chat/controller.js.map +1 -0
  39. package/dist/client/chat/extensions.d.ts +8 -3
  40. package/dist/client/chat/extensions.d.ts.map +1 -1
  41. package/dist/client/chat/extensions.js.map +1 -1
  42. package/dist/client/chat/feedback.d.ts +18 -0
  43. package/dist/client/chat/feedback.d.ts.map +1 -0
  44. package/dist/client/chat/feedback.js +38 -0
  45. package/dist/client/chat/feedback.js.map +1 -0
  46. package/dist/client/chat/form-registry.d.ts +95 -0
  47. package/dist/client/chat/form-registry.d.ts.map +1 -0
  48. package/dist/client/chat/form-registry.js +384 -0
  49. package/dist/client/chat/form-registry.js.map +1 -0
  50. package/dist/client/chat/keys.d.ts +1 -0
  51. package/dist/client/chat/keys.d.ts.map +1 -1
  52. package/dist/client/chat/keys.js +3 -1
  53. package/dist/client/chat/keys.js.map +1 -1
  54. package/dist/client/chat/message-model.d.ts +38 -44
  55. package/dist/client/chat/message-model.d.ts.map +1 -1
  56. package/dist/client/chat/message-model.js +138 -56
  57. package/dist/client/chat/message-model.js.map +1 -1
  58. package/dist/client/chat/provider.d.ts +12 -2
  59. package/dist/client/chat/provider.d.ts.map +1 -1
  60. package/dist/client/chat/provider.js +130 -4
  61. package/dist/client/chat/provider.js.map +1 -1
  62. package/dist/client/chat/submissions.d.ts +67 -0
  63. package/dist/client/chat/submissions.d.ts.map +1 -0
  64. package/dist/client/chat/submissions.js +241 -0
  65. package/dist/client/chat/submissions.js.map +1 -0
  66. package/dist/client/chat/tool-renderer.d.ts +39 -0
  67. package/dist/client/chat/tool-renderer.d.ts.map +1 -0
  68. package/dist/client/chat/tool-renderer.js +27 -0
  69. package/dist/client/chat/tool-renderer.js.map +1 -0
  70. package/dist/client/chat/use-chat-scroll.d.ts +4 -0
  71. package/dist/client/chat/use-chat-scroll.d.ts.map +1 -0
  72. package/dist/client/chat/use-chat-scroll.js +73 -0
  73. package/dist/client/chat/use-chat-scroll.js.map +1 -0
  74. package/dist/client/chat/use-chat.d.ts +13 -24
  75. package/dist/client/chat/use-chat.d.ts.map +1 -1
  76. package/dist/client/chat/use-chat.js +250 -235
  77. package/dist/client/chat/use-chat.js.map +1 -1
  78. package/dist/client/chat.d.ts +20 -8
  79. package/dist/client/chat.d.ts.map +1 -1
  80. package/dist/client/chat.js +16 -4
  81. package/dist/client/chat.js.map +1 -1
  82. package/dist/client/components/agent-picker.d.ts +6 -23
  83. package/dist/client/components/agent-picker.d.ts.map +1 -1
  84. package/dist/client/components/agent-picker.js +20 -39
  85. package/dist/client/components/agent-picker.js.map +1 -1
  86. package/dist/client/components/quota-status.d.ts +16 -0
  87. package/dist/client/components/quota-status.d.ts.map +1 -0
  88. package/dist/client/components/quota-status.js +39 -0
  89. package/dist/client/components/quota-status.js.map +1 -0
  90. package/dist/client/components/runners-refresh.d.ts.map +1 -1
  91. package/dist/client/components/runners-refresh.js +1 -0
  92. package/dist/client/components/runners-refresh.js.map +1 -1
  93. package/dist/client/components/variables/variable-dialogs.d.ts.map +1 -1
  94. package/dist/client/components/variables/variable-dialogs.js +7 -7
  95. package/dist/client/components/variables/variable-dialogs.js.map +1 -1
  96. package/dist/client/config.d.ts +2 -0
  97. package/dist/client/config.d.ts.map +1 -1
  98. package/dist/client/config.js +2 -0
  99. package/dist/client/config.js.map +1 -1
  100. package/dist/client/hooks/use-agent-picker-labels.d.ts.map +1 -1
  101. package/dist/client/hooks/use-agent-picker-labels.js +4 -12
  102. package/dist/client/hooks/use-agent-picker-labels.js.map +1 -1
  103. package/dist/client/hooks/use-quota-expiry.d.ts +7 -0
  104. package/dist/client/hooks/use-quota-expiry.d.ts.map +1 -0
  105. package/dist/client/hooks/use-quota-expiry.js +92 -0
  106. package/dist/client/hooks/use-quota-expiry.js.map +1 -0
  107. package/dist/client/hooks/use-realtime-topic.d.ts +1 -4
  108. package/dist/client/hooks/use-realtime-topic.d.ts.map +1 -1
  109. package/dist/client/hooks/use-realtime-topic.js +7 -11
  110. package/dist/client/hooks/use-realtime-topic.js.map +1 -1
  111. package/dist/client/kit.d.ts +14 -12
  112. package/dist/client/kit.d.ts.map +1 -1
  113. package/dist/client/kit.js +37 -14
  114. package/dist/client/kit.js.map +1 -1
  115. package/dist/client/lib/agents.d.ts +5 -18
  116. package/dist/client/lib/agents.d.ts.map +1 -1
  117. package/dist/client/lib/agents.js +18 -55
  118. package/dist/client/lib/agents.js.map +1 -1
  119. package/dist/client/lib/format.d.ts +3 -1
  120. package/dist/client/lib/format.d.ts.map +1 -1
  121. package/dist/client/lib/format.js +25 -0
  122. package/dist/client/lib/format.js.map +1 -1
  123. package/dist/client/lib/skill-settings-context.d.ts +9 -0
  124. package/dist/client/lib/skill-settings-context.d.ts.map +1 -0
  125. package/dist/client/lib/skill-settings-context.js +4 -0
  126. package/dist/client/lib/skill-settings-context.js.map +1 -0
  127. package/dist/client/lib/skill-settings.d.ts +12 -0
  128. package/dist/client/lib/skill-settings.d.ts.map +1 -0
  129. package/dist/client/lib/skill-settings.js +37 -0
  130. package/dist/client/lib/skill-settings.js.map +1 -0
  131. package/dist/client/locales/chat.en-US.d.ts +8 -27
  132. package/dist/client/locales/chat.en-US.d.ts.map +1 -1
  133. package/dist/client/locales/chat.en-US.js +12 -30
  134. package/dist/client/locales/chat.en-US.js.map +1 -1
  135. package/dist/client/locales/chat.zh-CN.d.ts.map +1 -1
  136. package/dist/client/locales/chat.zh-CN.js +9 -27
  137. package/dist/client/locales/chat.zh-CN.js.map +1 -1
  138. package/dist/client/locales/en-US.d.ts +87 -217
  139. package/dist/client/locales/en-US.d.ts.map +1 -1
  140. package/dist/client/locales/en-US.js +92 -218
  141. package/dist/client/locales/en-US.js.map +1 -1
  142. package/dist/client/locales/runWait.en-US.d.ts +7 -0
  143. package/dist/client/locales/runWait.en-US.d.ts.map +1 -1
  144. package/dist/client/locales/runWait.en-US.js +10 -3
  145. package/dist/client/locales/runWait.en-US.js.map +1 -1
  146. package/dist/client/locales/runWait.zh-CN.d.ts +1 -1
  147. package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -1
  148. package/dist/client/locales/runWait.zh-CN.js +11 -4
  149. package/dist/client/locales/runWait.zh-CN.js.map +1 -1
  150. package/dist/client/locales/runtimes.en-US.d.ts +83 -0
  151. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  152. package/dist/client/locales/runtimes.en-US.js +84 -1
  153. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  154. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  155. package/dist/client/locales/runtimes.zh-CN.js +83 -0
  156. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  157. package/dist/client/locales/skills.en-US.d.ts +7 -0
  158. package/dist/client/locales/skills.en-US.d.ts.map +1 -1
  159. package/dist/client/locales/skills.en-US.js +8 -1
  160. package/dist/client/locales/skills.en-US.js.map +1 -1
  161. package/dist/client/locales/skills.zh-CN.d.ts.map +1 -1
  162. package/dist/client/locales/skills.zh-CN.js +8 -1
  163. package/dist/client/locales/skills.zh-CN.js.map +1 -1
  164. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  165. package/dist/client/locales/zh-CN.js +94 -220
  166. package/dist/client/locales/zh-CN.js.map +1 -1
  167. package/dist/client/online/services.d.ts.map +1 -1
  168. package/dist/client/online/services.js +5 -6
  169. package/dist/client/online/services.js.map +1 -1
  170. package/dist/client/pages/agents/agent-dialog.d.ts +9 -0
  171. package/dist/client/pages/agents/agent-dialog.d.ts.map +1 -0
  172. package/dist/client/pages/agents/agent-dialog.js +106 -0
  173. package/dist/client/pages/agents/agent-dialog.js.map +1 -0
  174. package/dist/client/pages/agents/agent-state.d.ts +11 -0
  175. package/dist/client/pages/agents/agent-state.d.ts.map +1 -0
  176. package/dist/client/pages/agents/agent-state.js +28 -0
  177. package/dist/client/pages/agents/agent-state.js.map +1 -0
  178. package/dist/client/pages/agents/index.d.ts +1 -1
  179. package/dist/client/pages/agents/index.d.ts.map +1 -1
  180. package/dist/client/pages/agents/index.js +7 -101
  181. package/dist/client/pages/agents/index.js.map +1 -1
  182. package/dist/client/pages/agents/runner-agents.d.ts +3 -0
  183. package/dist/client/pages/agents/runner-agents.d.ts.map +1 -0
  184. package/dist/client/pages/agents/runner-agents.js +185 -0
  185. package/dist/client/pages/agents/runner-agents.js.map +1 -0
  186. package/dist/client/pages/runtimes/connect.js.map +1 -1
  187. package/dist/client/pages/runtimes/index.d.ts.map +1 -1
  188. package/dist/client/pages/runtimes/index.js +1 -1
  189. package/dist/client/pages/runtimes/index.js.map +1 -1
  190. package/dist/client/pages/runtimes/quota-targets.d.ts +4 -0
  191. package/dist/client/pages/runtimes/quota-targets.d.ts.map +1 -0
  192. package/dist/client/pages/runtimes/quota-targets.js +18 -0
  193. package/dist/client/pages/runtimes/quota-targets.js.map +1 -0
  194. package/dist/client/pages/runtimes/quota.d.ts +17 -0
  195. package/dist/client/pages/runtimes/quota.d.ts.map +1 -0
  196. package/dist/client/pages/runtimes/quota.js +50 -0
  197. package/dist/client/pages/runtimes/quota.js.map +1 -0
  198. package/dist/client/pages/runtimes/runner-cells.d.ts +11 -4
  199. package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -1
  200. package/dist/client/pages/runtimes/runner-cells.js +6 -3
  201. package/dist/client/pages/runtimes/runner-cells.js.map +1 -1
  202. package/dist/client/pages/runtimes/runner-overview.d.ts +9 -0
  203. package/dist/client/pages/runtimes/runner-overview.d.ts.map +1 -0
  204. package/dist/client/pages/runtimes/runner-overview.js +109 -0
  205. package/dist/client/pages/runtimes/runner-overview.js.map +1 -0
  206. package/dist/client/pages/runtimes/runner-runs.d.ts +5 -0
  207. package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -0
  208. package/dist/client/pages/runtimes/runner-runs.js +35 -0
  209. package/dist/client/pages/runtimes/runner-runs.js.map +1 -0
  210. package/dist/client/pages/runtimes/runner-sheet.d.ts +2 -3
  211. package/dist/client/pages/runtimes/runner-sheet.d.ts.map +1 -1
  212. package/dist/client/pages/runtimes/runner-sheet.js +43 -171
  213. package/dist/client/pages/runtimes/runner-sheet.js.map +1 -1
  214. package/dist/client/pages/runtimes/runner-tools.d.ts +17 -0
  215. package/dist/client/pages/runtimes/runner-tools.d.ts.map +1 -0
  216. package/dist/client/pages/runtimes/runner-tools.js +75 -0
  217. package/dist/client/pages/runtimes/runner-tools.js.map +1 -0
  218. package/dist/client/pages/runtimes/runner-workspaces.d.ts +6 -0
  219. package/dist/client/pages/runtimes/runner-workspaces.d.ts.map +1 -0
  220. package/dist/client/pages/runtimes/runner-workspaces.js +37 -0
  221. package/dist/client/pages/runtimes/runner-workspaces.js.map +1 -0
  222. package/dist/client/pages/runtimes/tool-slots-fields.js +1 -1
  223. package/dist/client/pages/runtimes/tool-slots-fields.js.map +1 -1
  224. package/dist/client/pages/runtimes/workspace-diagnostics.d.ts +6 -4
  225. package/dist/client/pages/runtimes/workspace-diagnostics.d.ts.map +1 -1
  226. package/dist/client/pages/runtimes/workspace-diagnostics.js +67 -33
  227. package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -1
  228. package/dist/client/pages/skills/detail/index.d.ts.map +1 -1
  229. package/dist/client/pages/skills/detail/index.js +11 -15
  230. package/dist/client/pages/skills/detail/index.js.map +1 -1
  231. package/dist/client/pages/skills/index.d.ts.map +1 -1
  232. package/dist/client/pages/skills/index.js +2 -2
  233. package/dist/client/pages/skills/index.js.map +1 -1
  234. package/dist/client/pages/usage/index.js +2 -2
  235. package/dist/client/pages/usage/index.js.map +1 -1
  236. package/dist/client/profile/default-agent.d.ts.map +1 -1
  237. package/dist/client/profile/default-agent.js +2 -4
  238. package/dist/client/profile/default-agent.js.map +1 -1
  239. package/dist/client/routes.d.ts +1 -1
  240. package/dist/client/routes.d.ts.map +1 -1
  241. package/dist/client/routes.js +1 -13
  242. package/dist/client/routes.js.map +1 -1
  243. package/dist/client/runs/format-wait.d.ts.map +1 -1
  244. package/dist/client/runs/format-wait.js +15 -1
  245. package/dist/client/runs/format-wait.js.map +1 -1
  246. package/dist/client/runs/subject-runs.d.ts +5 -0
  247. package/dist/client/runs/subject-runs.d.ts.map +1 -1
  248. package/dist/client/runs/subject-runs.js +24 -9
  249. package/dist/client/runs/subject-runs.js.map +1 -1
  250. package/dist/client/runs/use-run-events.d.ts +1 -1
  251. package/dist/client/runs/use-run-events.d.ts.map +1 -1
  252. package/dist/client/runs/use-run-events.js +5 -2
  253. package/dist/client/runs/use-run-events.js.map +1 -1
  254. package/dist/client/runs.d.ts +1 -1
  255. package/dist/client/runs.d.ts.map +1 -1
  256. package/dist/client/runs.js +1 -1
  257. package/dist/client/runs.js.map +1 -1
  258. package/dist/database/migrations/.manifest.json +42 -2
  259. package/dist/database/migrations/202610020003_ag_create_runs.d.ts.map +1 -1
  260. package/dist/database/migrations/202610020003_ag_create_runs.js +0 -1
  261. package/dist/database/migrations/202610020003_ag_create_runs.js.map +1 -1
  262. package/dist/database/migrations/202610120001_ag_index_run_retries.d.ts +4 -0
  263. package/dist/database/migrations/202610120001_ag_index_run_retries.d.ts.map +1 -0
  264. package/dist/database/migrations/202610120001_ag_index_run_retries.js +17 -0
  265. package/dist/database/migrations/202610120001_ag_index_run_retries.js.map +1 -0
  266. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.d.ts +4 -0
  267. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.d.ts.map +1 -0
  268. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.js +50 -0
  269. package/dist/database/migrations/202610120002_ag_add_queue_entered_at.js.map +1 -0
  270. package/dist/database/migrations/202610170001_ag_runner_quota.d.ts +4 -0
  271. package/dist/database/migrations/202610170001_ag_runner_quota.d.ts.map +1 -0
  272. package/dist/database/migrations/202610170001_ag_runner_quota.js +19 -0
  273. package/dist/database/migrations/202610170001_ag_runner_quota.js.map +1 -0
  274. package/dist/database/migrations/202610240020_ag_runner_agents.d.ts +4 -0
  275. package/dist/database/migrations/202610240020_ag_runner_agents.d.ts.map +1 -0
  276. package/dist/database/migrations/202610240020_ag_runner_agents.js +115 -0
  277. package/dist/database/migrations/202610240020_ag_runner_agents.js.map +1 -0
  278. package/dist/database/migrations/202610240040_ag_discovery_preferences.d.ts +4 -0
  279. package/dist/database/migrations/202610240040_ag_discovery_preferences.d.ts.map +1 -0
  280. package/dist/database/migrations/202610240040_ag_discovery_preferences.js +18 -0
  281. package/dist/database/migrations/202610240040_ag_discovery_preferences.js.map +1 -0
  282. package/dist/database/migrations/202610250001_ag_comment_runner_consent.d.ts +4 -0
  283. package/dist/database/migrations/202610250001_ag_comment_runner_consent.d.ts.map +1 -0
  284. package/dist/database/migrations/202610250001_ag_comment_runner_consent.js +41 -0
  285. package/dist/database/migrations/202610250001_ag_comment_runner_consent.js.map +1 -0
  286. package/dist/database/migrations/202610260001_ag_drop_directory_index.d.ts +4 -0
  287. package/dist/database/migrations/202610260001_ag_drop_directory_index.d.ts.map +1 -0
  288. package/dist/database/migrations/202610260001_ag_drop_directory_index.js +24 -0
  289. package/dist/database/migrations/202610260001_ag_drop_directory_index.js.map +1 -0
  290. package/dist/database/migrations/202610260001_ag_run_revision.d.ts +4 -0
  291. package/dist/database/migrations/202610260001_ag_run_revision.d.ts.map +1 -0
  292. package/dist/database/migrations/202610260001_ag_run_revision.js +19 -0
  293. package/dist/database/migrations/202610260001_ag_run_revision.js.map +1 -0
  294. package/dist/database/migrations/202610270001_ag_online_agent.d.ts +4 -0
  295. package/dist/database/migrations/202610270001_ag_online_agent.d.ts.map +1 -0
  296. package/dist/database/migrations/202610270001_ag_online_agent.js +43 -0
  297. package/dist/database/migrations/202610270001_ag_online_agent.js.map +1 -0
  298. package/dist/database/migrations/202610270002_ag_chat_list_visibility.d.ts +4 -0
  299. package/dist/database/migrations/202610270002_ag_chat_list_visibility.d.ts.map +1 -0
  300. package/dist/database/migrations/202610270002_ag_chat_list_visibility.js +17 -0
  301. package/dist/database/migrations/202610270002_ag_chat_list_visibility.js.map +1 -0
  302. package/dist/package.json +34 -12
  303. package/dist/server/cli/run-credential.js +1 -1
  304. package/dist/server/cli/surface.d.ts.map +1 -1
  305. package/dist/server/cli/surface.js +4 -1
  306. package/dist/server/cli/surface.js.map +1 -1
  307. package/dist/server/composition.d.ts +36 -35
  308. package/dist/server/composition.d.ts.map +1 -1
  309. package/dist/server/composition.js +99 -66
  310. package/dist/server/composition.js.map +1 -1
  311. package/dist/server/core/agents/agent.service.d.ts +51 -43
  312. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  313. package/dist/server/core/agents/agent.service.js +347 -321
  314. package/dist/server/core/agents/agent.service.js.map +1 -1
  315. package/dist/server/core/agents/agent.store.d.ts +26 -12
  316. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  317. package/dist/server/core/agents/agent.store.js +74 -66
  318. package/dist/server/core/agents/agent.store.js.map +1 -1
  319. package/dist/server/core/agents/agent.views.d.ts +29 -0
  320. package/dist/server/core/agents/agent.views.d.ts.map +1 -0
  321. package/dist/server/core/agents/agent.views.js +88 -0
  322. package/dist/server/core/agents/agent.views.js.map +1 -0
  323. package/dist/server/core/agents/discovery.d.ts +12 -0
  324. package/dist/server/core/agents/discovery.d.ts.map +1 -0
  325. package/dist/server/core/agents/discovery.js +39 -0
  326. package/dist/server/core/agents/discovery.js.map +1 -0
  327. package/dist/server/core/agents/index.d.ts +3 -2
  328. package/dist/server/core/agents/index.d.ts.map +1 -1
  329. package/dist/server/core/agents/index.js +3 -2
  330. package/dist/server/core/agents/index.js.map +1 -1
  331. package/dist/server/core/brief/brief.js +3 -3
  332. package/dist/server/core/brief/brief.js.map +1 -1
  333. package/dist/server/core/callers/index.d.ts +10 -1
  334. package/dist/server/core/callers/index.d.ts.map +1 -1
  335. package/dist/server/core/callers/index.js +15 -0
  336. package/dist/server/core/callers/index.js.map +1 -1
  337. package/dist/server/core/conversations/attachments.d.ts.map +1 -1
  338. package/dist/server/core/conversations/attachments.js +6 -1
  339. package/dist/server/core/conversations/attachments.js.map +1 -1
  340. package/dist/server/core/conversations/availability.d.ts +6 -11
  341. package/dist/server/core/conversations/availability.d.ts.map +1 -1
  342. package/dist/server/core/conversations/availability.js +11 -15
  343. package/dist/server/core/conversations/availability.js.map +1 -1
  344. package/dist/server/core/conversations/chat-settings.d.ts +2 -2
  345. package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
  346. package/dist/server/core/conversations/chat-settings.js +17 -22
  347. package/dist/server/core/conversations/chat-settings.js.map +1 -1
  348. package/dist/server/core/conversations/conversation.service.d.ts +13 -8
  349. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  350. package/dist/server/core/conversations/conversation.service.js +397 -383
  351. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  352. package/dist/server/core/conversations/conversation.store.d.ts +3 -0
  353. package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
  354. package/dist/server/core/conversations/conversation.store.js +2 -1
  355. package/dist/server/core/conversations/conversation.store.js.map +1 -1
  356. package/dist/server/core/conversations/page-context.d.ts +8 -2
  357. package/dist/server/core/conversations/page-context.d.ts.map +1 -1
  358. package/dist/server/core/conversations/page-context.js +61 -2
  359. package/dist/server/core/conversations/page-context.js.map +1 -1
  360. package/dist/server/core/conversations/ports.d.ts +18 -20
  361. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  362. package/dist/server/core/reports/model-usage.d.ts.map +1 -1
  363. package/dist/server/core/reports/model-usage.js +42 -44
  364. package/dist/server/core/reports/model-usage.js.map +1 -1
  365. package/dist/server/core/reports/prices.d.ts.map +1 -1
  366. package/dist/server/core/reports/prices.js +29 -5
  367. package/dist/server/core/reports/prices.js.map +1 -1
  368. package/dist/server/core/reports/report.service.d.ts +4 -2
  369. package/dist/server/core/reports/report.service.d.ts.map +1 -1
  370. package/dist/server/core/reports/report.service.js +148 -66
  371. package/dist/server/core/reports/report.service.js.map +1 -1
  372. package/dist/server/core/runs/access.d.ts +5 -0
  373. package/dist/server/core/runs/access.d.ts.map +1 -0
  374. package/dist/server/core/runs/access.js +10 -0
  375. package/dist/server/core/runs/access.js.map +1 -0
  376. package/dist/server/core/runs/availability.d.ts +18 -6
  377. package/dist/server/core/runs/availability.d.ts.map +1 -1
  378. package/dist/server/core/runs/availability.js +40 -34
  379. package/dist/server/core/runs/availability.js.map +1 -1
  380. package/dist/server/core/runs/claim.d.ts +30 -106
  381. package/dist/server/core/runs/claim.d.ts.map +1 -1
  382. package/dist/server/core/runs/claim.js +630 -323
  383. package/dist/server/core/runs/claim.js.map +1 -1
  384. package/dist/server/core/runs/comment-consent.d.ts +24 -0
  385. package/dist/server/core/runs/comment-consent.d.ts.map +1 -0
  386. package/dist/server/core/runs/comment-consent.js +116 -0
  387. package/dist/server/core/runs/comment-consent.js.map +1 -0
  388. package/dist/server/core/runs/eligibility.d.ts +13 -1
  389. package/dist/server/core/runs/eligibility.d.ts.map +1 -1
  390. package/dist/server/core/runs/eligibility.js +41 -10
  391. package/dist/server/core/runs/eligibility.js.map +1 -1
  392. package/dist/server/core/runs/execution-view.d.ts +8 -0
  393. package/dist/server/core/runs/execution-view.d.ts.map +1 -1
  394. package/dist/server/core/runs/execution-view.js +9 -0
  395. package/dist/server/core/runs/execution-view.js.map +1 -1
  396. package/dist/server/core/runs/execution.d.ts +1 -1
  397. package/dist/server/core/runs/execution.d.ts.map +1 -1
  398. package/dist/server/core/runs/execution.js +8 -2
  399. package/dist/server/core/runs/execution.js.map +1 -1
  400. package/dist/server/core/runs/identity.d.ts +9 -0
  401. package/dist/server/core/runs/identity.d.ts.map +1 -0
  402. package/dist/server/core/runs/identity.js +75 -0
  403. package/dist/server/core/runs/identity.js.map +1 -0
  404. package/dist/server/core/runs/index.d.ts +6 -6
  405. package/dist/server/core/runs/index.d.ts.map +1 -1
  406. package/dist/server/core/runs/index.js +6 -6
  407. package/dist/server/core/runs/index.js.map +1 -1
  408. package/dist/server/core/runs/input-gate.d.ts +1 -1
  409. package/dist/server/core/runs/input-gate.d.ts.map +1 -1
  410. package/dist/server/core/runs/input-gate.js +4 -2
  411. package/dist/server/core/runs/input-gate.js.map +1 -1
  412. package/dist/server/core/runs/lifecycle.d.ts +16 -18
  413. package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
  414. package/dist/server/core/runs/lifecycle.js +146 -60
  415. package/dist/server/core/runs/lifecycle.js.map +1 -1
  416. package/dist/server/core/runs/policy.d.ts +9 -2
  417. package/dist/server/core/runs/policy.d.ts.map +1 -1
  418. package/dist/server/core/runs/policy.js +17 -8
  419. package/dist/server/core/runs/policy.js.map +1 -1
  420. package/dist/server/core/runs/ports.d.ts +41 -31
  421. package/dist/server/core/runs/ports.d.ts.map +1 -1
  422. package/dist/server/core/runs/ports.js +2 -13
  423. package/dist/server/core/runs/ports.js.map +1 -1
  424. package/dist/server/core/runs/preview.d.ts.map +1 -1
  425. package/dist/server/core/runs/preview.js +1 -3
  426. package/dist/server/core/runs/preview.js.map +1 -1
  427. package/dist/server/core/runs/run-data-purge.d.ts +15 -0
  428. package/dist/server/core/runs/run-data-purge.d.ts.map +1 -0
  429. package/dist/server/core/runs/run-data-purge.js +82 -0
  430. package/dist/server/core/runs/run-data-purge.js.map +1 -0
  431. package/dist/server/core/runs/run-requests.d.ts +25 -0
  432. package/dist/server/core/runs/run-requests.d.ts.map +1 -1
  433. package/dist/server/core/runs/run-requests.js +131 -64
  434. package/dist/server/core/runs/run-requests.js.map +1 -1
  435. package/dist/server/core/runs/run.service.d.ts +39 -3
  436. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  437. package/dist/server/core/runs/run.service.js +729 -102
  438. package/dist/server/core/runs/run.service.js.map +1 -1
  439. package/dist/server/core/runs/run.store.d.ts +11 -0
  440. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  441. package/dist/server/core/runs/run.store.js +39 -11
  442. package/dist/server/core/runs/run.store.js.map +1 -1
  443. package/dist/server/core/runs/runner-view.d.ts +12 -2
  444. package/dist/server/core/runs/runner-view.d.ts.map +1 -1
  445. package/dist/server/core/runs/runner-view.js +55 -13
  446. package/dist/server/core/runs/runner-view.js.map +1 -1
  447. package/dist/server/core/runs/selection.d.ts +13 -0
  448. package/dist/server/core/runs/selection.d.ts.map +1 -0
  449. package/dist/server/core/runs/selection.js +21 -0
  450. package/dist/server/core/runs/selection.js.map +1 -0
  451. package/dist/server/core/runs/sweeper.d.ts +1 -0
  452. package/dist/server/core/runs/sweeper.d.ts.map +1 -1
  453. package/dist/server/core/runs/sweeper.js +66 -17
  454. package/dist/server/core/runs/sweeper.js.map +1 -1
  455. package/dist/server/core/runs/transitions.d.ts +6 -2
  456. package/dist/server/core/runs/transitions.d.ts.map +1 -1
  457. package/dist/server/core/runs/transitions.js +73 -19
  458. package/dist/server/core/runs/transitions.js.map +1 -1
  459. package/dist/server/core/runs/workload.d.ts +17 -5
  460. package/dist/server/core/runs/workload.d.ts.map +1 -1
  461. package/dist/server/core/runs/workload.js +203 -68
  462. package/dist/server/core/runs/workload.js.map +1 -1
  463. package/dist/server/core/skills/skill.service.d.ts +6 -2
  464. package/dist/server/core/skills/skill.service.d.ts.map +1 -1
  465. package/dist/server/core/skills/skill.service.js +87 -66
  466. package/dist/server/core/skills/skill.service.js.map +1 -1
  467. package/dist/server/core/skills/skill.store.d.ts +14 -0
  468. package/dist/server/core/skills/skill.store.d.ts.map +1 -1
  469. package/dist/server/core/skills/skill.store.js +30 -0
  470. package/dist/server/core/skills/skill.store.js.map +1 -1
  471. package/dist/server/core/transaction-read.d.ts +4 -0
  472. package/dist/server/core/transaction-read.d.ts.map +1 -0
  473. package/dist/server/core/transaction-read.js +30 -0
  474. package/dist/server/core/transaction-read.js.map +1 -0
  475. package/dist/server/core/variables/index.d.ts +1 -1
  476. package/dist/server/core/variables/index.d.ts.map +1 -1
  477. package/dist/server/core/variables/index.js.map +1 -1
  478. package/dist/server/core/variables/variable.service.d.ts +18 -0
  479. package/dist/server/core/variables/variable.service.d.ts.map +1 -1
  480. package/dist/server/core/variables/variable.service.js +95 -20
  481. package/dist/server/core/variables/variable.service.js.map +1 -1
  482. package/dist/server/index.d.ts +4 -0
  483. package/dist/server/index.d.ts.map +1 -1
  484. package/dist/server/index.js +3 -0
  485. package/dist/server/index.js.map +1 -1
  486. package/dist/server/jobs/job.service.d.ts +1 -1
  487. package/dist/server/jobs/job.service.d.ts.map +1 -1
  488. package/dist/server/jobs/job.service.js +8 -2
  489. package/dist/server/jobs/job.service.js.map +1 -1
  490. package/dist/server/kernel/events.d.ts +12 -3
  491. package/dist/server/kernel/events.d.ts.map +1 -1
  492. package/dist/server/kernel/events.js.map +1 -1
  493. package/dist/server/kernel/scopes.d.ts +6 -0
  494. package/dist/server/kernel/scopes.d.ts.map +1 -1
  495. package/dist/server/kernel/scopes.js +3 -1
  496. package/dist/server/kernel/scopes.js.map +1 -1
  497. package/dist/server/online/agent/configuration.d.ts +26 -0
  498. package/dist/server/online/agent/configuration.d.ts.map +1 -0
  499. package/dist/server/online/agent/configuration.js +261 -0
  500. package/dist/server/online/agent/configuration.js.map +1 -0
  501. package/dist/server/online/agent/contracts.d.ts +87 -0
  502. package/dist/server/online/agent/contracts.d.ts.map +1 -0
  503. package/dist/server/online/agent/contracts.js +2 -0
  504. package/dist/server/online/agent/contracts.js.map +1 -0
  505. package/dist/server/online/agent/errors.d.ts +11 -0
  506. package/dist/server/online/agent/errors.d.ts.map +1 -0
  507. package/dist/server/online/agent/errors.js +21 -0
  508. package/dist/server/online/agent/errors.js.map +1 -0
  509. package/dist/server/online/agent/index.d.ts +11 -0
  510. package/dist/server/online/agent/index.d.ts.map +1 -0
  511. package/dist/server/online/agent/index.js +9 -0
  512. package/dist/server/online/agent/index.js.map +1 -0
  513. package/dist/server/online/agent/messages/json.d.ts +5 -0
  514. package/dist/server/online/agent/messages/json.d.ts.map +1 -0
  515. package/dist/server/online/agent/messages/json.js +88 -0
  516. package/dist/server/online/agent/messages/json.js.map +1 -0
  517. package/dist/server/online/agent/messages/projection.d.ts +20 -0
  518. package/dist/server/online/agent/messages/projection.d.ts.map +1 -0
  519. package/dist/server/online/agent/messages/projection.js +495 -0
  520. package/dist/server/online/agent/messages/projection.js.map +1 -0
  521. package/dist/server/online/agent/messages/validation.d.ts +7 -0
  522. package/dist/server/online/agent/messages/validation.d.ts.map +1 -0
  523. package/dist/server/online/agent/messages/validation.js +159 -0
  524. package/dist/server/online/agent/messages/validation.js.map +1 -0
  525. package/dist/server/online/agent/native/backend.d.ts +60 -0
  526. package/dist/server/online/agent/native/backend.d.ts.map +1 -0
  527. package/dist/server/online/agent/native/backend.js +411 -0
  528. package/dist/server/online/agent/native/backend.js.map +1 -0
  529. package/dist/server/online/agent/native/execution.d.ts +41 -0
  530. package/dist/server/online/agent/native/execution.d.ts.map +1 -0
  531. package/dist/server/online/agent/native/execution.js +430 -0
  532. package/dist/server/online/agent/native/execution.js.map +1 -0
  533. package/dist/server/online/agent/native/session.d.ts +40 -0
  534. package/dist/server/online/agent/native/session.d.ts.map +1 -0
  535. package/dist/server/online/agent/native/session.js +104 -0
  536. package/dist/server/online/agent/native/session.js.map +1 -0
  537. package/dist/server/online/agent/native/types.d.ts +32 -0
  538. package/dist/server/online/agent/native/types.d.ts.map +1 -0
  539. package/dist/server/online/agent/native/types.js +2 -0
  540. package/dist/server/online/agent/native/types.js.map +1 -0
  541. package/dist/server/online/agent/persistence/manager.d.ts +16 -0
  542. package/dist/server/online/agent/persistence/manager.d.ts.map +1 -0
  543. package/dist/server/online/agent/persistence/manager.js +209 -0
  544. package/dist/server/online/agent/persistence/manager.js.map +1 -0
  545. package/dist/server/online/agent/persistence/state.d.ts +11 -0
  546. package/dist/server/online/agent/persistence/state.d.ts.map +1 -0
  547. package/dist/server/online/agent/persistence/state.js +45 -0
  548. package/dist/server/online/agent/persistence/state.js.map +1 -0
  549. package/dist/server/online/agent/persistence/store.d.ts +58 -0
  550. package/dist/server/online/agent/persistence/store.d.ts.map +1 -0
  551. package/dist/server/online/agent/persistence/store.js +634 -0
  552. package/dist/server/online/agent/persistence/store.js.map +1 -0
  553. package/dist/server/online/agent/persistence/types.d.ts +44 -0
  554. package/dist/server/online/agent/persistence/types.d.ts.map +1 -0
  555. package/dist/server/online/agent/persistence/types.js +2 -0
  556. package/dist/server/online/agent/persistence/types.js.map +1 -0
  557. package/dist/server/online/agent/runner/backend.d.ts +57 -0
  558. package/dist/server/online/agent/runner/backend.d.ts.map +1 -0
  559. package/dist/server/online/agent/runner/backend.js +501 -0
  560. package/dist/server/online/agent/runner/backend.js.map +1 -0
  561. package/dist/server/online/agent/runner/projection.d.ts +10 -0
  562. package/dist/server/online/agent/runner/projection.d.ts.map +1 -0
  563. package/dist/server/online/agent/runner/projection.js +171 -0
  564. package/dist/server/online/agent/runner/projection.js.map +1 -0
  565. package/dist/server/online/agent/runner/types.d.ts +44 -0
  566. package/dist/server/online/agent/runner/types.d.ts.map +1 -0
  567. package/dist/server/online/agent/runner/types.js +2 -0
  568. package/dist/server/online/agent/runner/types.js.map +1 -0
  569. package/dist/server/online/agent/service.d.ts +47 -0
  570. package/dist/server/online/agent/service.d.ts.map +1 -0
  571. package/dist/server/online/agent/service.js +111 -0
  572. package/dist/server/online/agent/service.js.map +1 -0
  573. package/dist/server/online/agent/transport/streams.d.ts +54 -0
  574. package/dist/server/online/agent/transport/streams.d.ts.map +1 -0
  575. package/dist/server/online/agent/transport/streams.js +440 -0
  576. package/dist/server/online/agent/transport/streams.js.map +1 -0
  577. package/dist/server/online/agent/types.d.ts +155 -0
  578. package/dist/server/online/agent/types.d.ts.map +1 -0
  579. package/dist/server/online/agent/types.js +2 -0
  580. package/dist/server/online/agent/types.js.map +1 -0
  581. package/dist/server/online/index.d.ts +0 -5
  582. package/dist/server/online/index.d.ts.map +1 -1
  583. package/dist/server/online/index.js +0 -5
  584. package/dist/server/online/index.js.map +1 -1
  585. package/dist/server/online/providers.d.ts.map +1 -1
  586. package/dist/server/online/providers.js +26 -2
  587. package/dist/server/online/providers.js.map +1 -1
  588. package/dist/server/online/routes.d.ts.map +1 -1
  589. package/dist/server/online/routes.js +6 -35
  590. package/dist/server/online/routes.js.map +1 -1
  591. package/dist/server/online/services.d.ts.map +1 -1
  592. package/dist/server/online/services.js +101 -24
  593. package/dist/server/online/services.js.map +1 -1
  594. package/dist/server/providers/agents.d.ts +18 -25
  595. package/dist/server/providers/agents.d.ts.map +1 -1
  596. package/dist/server/providers/agents.js +79 -100
  597. package/dist/server/providers/agents.js.map +1 -1
  598. package/dist/server/providers/runners.d.ts +3 -1
  599. package/dist/server/providers/runners.d.ts.map +1 -1
  600. package/dist/server/providers/runners.js +38 -9
  601. package/dist/server/providers/runners.js.map +1 -1
  602. package/dist/server/routes/admin.d.ts +4 -0
  603. package/dist/server/routes/admin.d.ts.map +1 -1
  604. package/dist/server/routes/admin.js +139 -212
  605. package/dist/server/routes/admin.js.map +1 -1
  606. package/dist/server/routes/chat.d.ts.map +1 -1
  607. package/dist/server/routes/chat.js +313 -164
  608. package/dist/server/routes/chat.js.map +1 -1
  609. package/dist/server/routes/index.d.ts.map +1 -1
  610. package/dist/server/routes/index.js +8 -0
  611. package/dist/server/routes/index.js.map +1 -1
  612. package/dist/server/routes/roster.d.ts.map +1 -1
  613. package/dist/server/routes/roster.js +6 -22
  614. package/dist/server/routes/roster.js.map +1 -1
  615. package/dist/server/routes/run-requests.js +3 -3
  616. package/dist/server/routes/run-requests.js.map +1 -1
  617. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  618. package/dist/server/routes/runners/admin.js +219 -25
  619. package/dist/server/routes/runners/admin.js.map +1 -1
  620. package/dist/server/routes/runners/install.d.ts.map +1 -1
  621. package/dist/server/routes/runners/install.js +7 -2
  622. package/dist/server/routes/runners/install.js.map +1 -1
  623. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  624. package/dist/server/routes/runners/runner.js +2 -0
  625. package/dist/server/routes/runners/runner.js.map +1 -1
  626. package/dist/server/routes/schemas.d.ts +18 -10
  627. package/dist/server/routes/schemas.d.ts.map +1 -1
  628. package/dist/server/routes/schemas.js +498 -153
  629. package/dist/server/routes/schemas.js.map +1 -1
  630. package/dist/server/runners/runner.service.d.ts +47 -4
  631. package/dist/server/runners/runner.service.d.ts.map +1 -1
  632. package/dist/server/runners/runner.service.js +423 -79
  633. package/dist/server/runners/runner.service.js.map +1 -1
  634. package/dist/server/runners/runner.store.d.ts +8 -3
  635. package/dist/server/runners/runner.store.d.ts.map +1 -1
  636. package/dist/server/runners/runner.store.js +63 -6
  637. package/dist/server/runners/runner.store.js.map +1 -1
  638. package/dist/server/runners/slots.d.ts +5 -2
  639. package/dist/server/runners/slots.d.ts.map +1 -1
  640. package/dist/server/runners/slots.js +3 -4
  641. package/dist/server/runners/slots.js.map +1 -1
  642. package/dist/server/runners/workspaces.d.ts.map +1 -1
  643. package/dist/server/runners/workspaces.js +18 -2
  644. package/dist/server/runners/workspaces.js.map +1 -1
  645. package/dist/server/testing.d.ts +0 -2
  646. package/dist/server/testing.d.ts.map +1 -1
  647. package/dist/server/testing.js +1 -4
  648. package/dist/server/testing.js.map +1 -1
  649. package/dist/server/tokens.d.ts +8 -7
  650. package/dist/server/tokens.d.ts.map +1 -1
  651. package/dist/server/tokens.js +4 -2
  652. package/dist/server/tokens.js.map +1 -1
  653. package/dist/shared/access.d.ts +2 -6
  654. package/dist/shared/access.d.ts.map +1 -1
  655. package/dist/shared/access.js +2 -6
  656. package/dist/shared/access.js.map +1 -1
  657. package/dist/shared/agents.d.ts +131 -169
  658. package/dist/shared/agents.d.ts.map +1 -1
  659. package/dist/shared/agents.js +36 -102
  660. package/dist/shared/agents.js.map +1 -1
  661. package/dist/shared/conversations.d.ts +93 -170
  662. package/dist/shared/conversations.d.ts.map +1 -1
  663. package/dist/shared/conversations.js +8 -30
  664. package/dist/shared/conversations.js.map +1 -1
  665. package/dist/shared/model-catalog.d.ts +53 -0
  666. package/dist/shared/model-catalog.d.ts.map +1 -0
  667. package/dist/shared/model-catalog.js +182 -0
  668. package/dist/shared/model-catalog.js.map +1 -0
  669. package/dist/shared/online-agent.d.ts +3 -0
  670. package/dist/shared/online-agent.d.ts.map +1 -0
  671. package/dist/shared/online-agent.js +3 -0
  672. package/dist/shared/online-agent.js.map +1 -0
  673. package/dist/shared/page-ui-context.d.ts +26 -0
  674. package/dist/shared/page-ui-context.d.ts.map +1 -0
  675. package/dist/shared/page-ui-context.js +129 -0
  676. package/dist/shared/page-ui-context.js.map +1 -0
  677. package/dist/shared/quota.d.ts +15 -0
  678. package/dist/shared/quota.d.ts.map +1 -0
  679. package/dist/shared/quota.js +2 -0
  680. package/dist/shared/quota.js.map +1 -0
  681. package/dist/shared/runners.d.ts +132 -14
  682. package/dist/shared/runners.d.ts.map +1 -1
  683. package/dist/shared/runners.js +171 -11
  684. package/dist/shared/runners.js.map +1 -1
  685. package/dist/shared/runs.d.ts +59 -1
  686. package/dist/shared/runs.d.ts.map +1 -1
  687. package/dist/shared/runs.js +28 -0
  688. package/dist/shared/runs.js.map +1 -1
  689. package/dist/shared/skills.d.ts +11 -5
  690. package/dist/shared/skills.d.ts.map +1 -1
  691. package/dist/shared/skills.js +7 -2
  692. package/dist/shared/skills.js.map +1 -1
  693. package/dist/shared/ui-message.d.ts +80 -0
  694. package/dist/shared/ui-message.d.ts.map +1 -0
  695. package/dist/shared/ui-message.js +153 -0
  696. package/dist/shared/ui-message.js.map +1 -0
  697. package/dist/shared/variables.js +1 -1
  698. package/dist/shared/variables.js.map +1 -1
  699. package/docs/ai-forms.md +346 -0
  700. package/docs/execution-history.md +19 -0
  701. package/docs/mysql-installation-upgrade.md +7 -0
  702. package/docs/runner-agents.md +27 -0
  703. package/docs/ui-message-clients.md +80 -0
  704. package/docs/ui-messages.md +209 -0
  705. package/docs/workspace-cleanup.md +13 -0
  706. package/package.json +39 -25
  707. package/skills/nocobase-app-plugin-agents/SKILL.md +16 -13
  708. package/skills/nocobase-app-plugin-agents/references/agents.md +30 -0
  709. package/skills/nocobase-app-plugin-agents/references/extension-points.md +21 -21
  710. package/skills/nocobase-app-plugin-agents/references/model-services.md +17 -0
  711. package/skills/nocobase-app-plugin-agents/references/online-agent.md +216 -0
  712. package/skills/nocobase-app-plugin-agents/references/runners.md +12 -0
  713. package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +6 -7
  714. package/skills/nocobase-app-plugin-agents/references/variables-skills-usage.md +6 -4
  715. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +29 -32
  716. package/dist/client/chat/settings-section.d.ts +0 -5
  717. package/dist/client/chat/settings-section.d.ts.map +0 -1
  718. package/dist/client/chat/settings-section.js +0 -86
  719. package/dist/client/chat/settings-section.js.map +0 -1
  720. package/dist/client/components/agent-fields.d.ts +0 -45
  721. package/dist/client/components/agent-fields.d.ts.map +0 -1
  722. package/dist/client/components/agent-fields.js +0 -83
  723. package/dist/client/components/agent-fields.js.map +0 -1
  724. package/dist/client/components/agent-type.d.ts +0 -32
  725. package/dist/client/components/agent-type.d.ts.map +0 -1
  726. package/dist/client/components/agent-type.js +0 -80
  727. package/dist/client/components/agent-type.js.map +0 -1
  728. package/dist/client/components/model-entries.d.ts +0 -44
  729. package/dist/client/components/model-entries.d.ts.map +0 -1
  730. package/dist/client/components/model-entries.js +0 -104
  731. package/dist/client/components/model-entries.js.map +0 -1
  732. package/dist/client/hooks/use-agent-save.d.ts +0 -9
  733. package/dist/client/hooks/use-agent-save.d.ts.map +0 -1
  734. package/dist/client/hooks/use-agent-save.js +0 -40
  735. package/dist/client/hooks/use-agent-save.js.map +0 -1
  736. package/dist/client/hooks/use-model-catalog.d.ts +0 -9
  737. package/dist/client/hooks/use-model-catalog.d.ts.map +0 -1
  738. package/dist/client/hooks/use-model-catalog.js +0 -27
  739. package/dist/client/hooks/use-model-catalog.js.map +0 -1
  740. package/dist/client/lib/model-suggestions.d.ts +0 -28
  741. package/dist/client/lib/model-suggestions.d.ts.map +0 -1
  742. package/dist/client/lib/model-suggestions.js +0 -44
  743. package/dist/client/lib/model-suggestions.js.map +0 -1
  744. package/dist/client/lib/tool-policy.d.ts +0 -3
  745. package/dist/client/lib/tool-policy.d.ts.map +0 -1
  746. package/dist/client/lib/tool-policy.js +0 -5
  747. package/dist/client/lib/tool-policy.js.map +0 -1
  748. package/dist/client/online/default-model.d.ts +0 -5
  749. package/dist/client/online/default-model.d.ts.map +0 -1
  750. package/dist/client/online/default-model.js +0 -65
  751. package/dist/client/online/default-model.js.map +0 -1
  752. package/dist/client/pages/agents/agent-model.d.ts +0 -69
  753. package/dist/client/pages/agents/agent-model.d.ts.map +0 -1
  754. package/dist/client/pages/agents/agent-model.js +0 -153
  755. package/dist/client/pages/agents/agent-model.js.map +0 -1
  756. package/dist/client/pages/agents/detail/brief-preview.d.ts +0 -7
  757. package/dist/client/pages/agents/detail/brief-preview.d.ts.map +0 -1
  758. package/dist/client/pages/agents/detail/brief-preview.js +0 -43
  759. package/dist/client/pages/agents/detail/brief-preview.js.map +0 -1
  760. package/dist/client/pages/agents/detail/history.d.ts +0 -11
  761. package/dist/client/pages/agents/detail/history.d.ts.map +0 -1
  762. package/dist/client/pages/agents/detail/history.js +0 -149
  763. package/dist/client/pages/agents/detail/history.js.map +0 -1
  764. package/dist/client/pages/agents/detail/index.d.ts +0 -3
  765. package/dist/client/pages/agents/detail/index.d.ts.map +0 -1
  766. package/dist/client/pages/agents/detail/index.js +0 -241
  767. package/dist/client/pages/agents/detail/index.js.map +0 -1
  768. package/dist/client/pages/agents/detail/sections.d.ts +0 -21
  769. package/dist/client/pages/agents/detail/sections.d.ts.map +0 -1
  770. package/dist/client/pages/agents/detail/sections.js +0 -280
  771. package/dist/client/pages/agents/detail/sections.js.map +0 -1
  772. package/dist/client/pages/agents/detail/tab-draft.d.ts +0 -43
  773. package/dist/client/pages/agents/detail/tab-draft.d.ts.map +0 -1
  774. package/dist/client/pages/agents/detail/tab-draft.js +0 -115
  775. package/dist/client/pages/agents/detail/tab-draft.js.map +0 -1
  776. package/dist/client/pages/agents/detail/unsaved-bar.d.ts +0 -13
  777. package/dist/client/pages/agents/detail/unsaved-bar.d.ts.map +0 -1
  778. package/dist/client/pages/agents/detail/unsaved-bar.js +0 -21
  779. package/dist/client/pages/agents/detail/unsaved-bar.js.map +0 -1
  780. package/dist/client/pages/agents/new.d.ts +0 -3
  781. package/dist/client/pages/agents/new.d.ts.map +0 -1
  782. package/dist/client/pages/agents/new.js +0 -149
  783. package/dist/client/pages/agents/new.js.map +0 -1
  784. package/dist/client/pages/agents/preset-picker.d.ts +0 -8
  785. package/dist/client/pages/agents/preset-picker.d.ts.map +0 -1
  786. package/dist/client/pages/agents/preset-picker.js +0 -41
  787. package/dist/client/pages/agents/preset-picker.js.map +0 -1
  788. package/dist/server/core/consultations/consultation.service.d.ts +0 -59
  789. package/dist/server/core/consultations/consultation.service.d.ts.map +0 -1
  790. package/dist/server/core/consultations/consultation.service.js +0 -198
  791. package/dist/server/core/consultations/consultation.service.js.map +0 -1
  792. package/dist/server/core/consultations/index.d.ts +0 -3
  793. package/dist/server/core/consultations/index.d.ts.map +0 -1
  794. package/dist/server/core/consultations/index.js +0 -3
  795. package/dist/server/core/consultations/index.js.map +0 -1
  796. package/dist/server/core/consultations/prompt.d.ts +0 -41
  797. package/dist/server/core/consultations/prompt.d.ts.map +0 -1
  798. package/dist/server/core/consultations/prompt.js +0 -64
  799. package/dist/server/core/consultations/prompt.js.map +0 -1
  800. package/dist/server/core/presets/index.d.ts +0 -19
  801. package/dist/server/core/presets/index.d.ts.map +0 -1
  802. package/dist/server/core/presets/index.js +0 -28
  803. package/dist/server/core/presets/index.js.map +0 -1
  804. package/dist/server/online/cli-command.d.ts +0 -20
  805. package/dist/server/online/cli-command.d.ts.map +0 -1
  806. package/dist/server/online/cli-command.js +0 -345
  807. package/dist/server/online/cli-command.js.map +0 -1
  808. package/dist/server/online/consult-tool.d.ts +0 -54
  809. package/dist/server/online/consult-tool.d.ts.map +0 -1
  810. package/dist/server/online/consult-tool.js +0 -177
  811. package/dist/server/online/consult-tool.js.map +0 -1
  812. package/dist/server/online/executor.d.ts +0 -83
  813. package/dist/server/online/executor.d.ts.map +0 -1
  814. package/dist/server/online/executor.js +0 -714
  815. package/dist/server/online/executor.js.map +0 -1
  816. package/dist/server/online/sandbox.d.ts +0 -32
  817. package/dist/server/online/sandbox.d.ts.map +0 -1
  818. package/dist/server/online/sandbox.js +0 -246
  819. package/dist/server/online/sandbox.js.map +0 -1
  820. package/dist/server/online/scripted.d.ts +0 -12
  821. package/dist/server/online/scripted.d.ts.map +0 -1
  822. package/dist/server/online/scripted.js +0 -176
  823. package/dist/server/online/scripted.js.map +0 -1
  824. package/dist/server/online/tools.d.ts +0 -17
  825. package/dist/server/online/tools.d.ts.map +0 -1
  826. package/dist/server/online/tools.js +0 -31
  827. package/dist/server/online/tools.js.map +0 -1
  828. package/dist/server/vendor/THIRD_PARTY_LICENSES.txt +0 -782
  829. package/dist/server/vendor/just-bash.d.ts +0 -83
  830. package/dist/server/vendor/just-bash.js +0 -2102
  831. package/dist/shared/presets.d.ts +0 -30
  832. package/dist/shared/presets.d.ts.map +0 -1
  833. package/dist/shared/presets.js +0 -2
  834. package/dist/shared/presets.js.map +0 -1
  835. package/skills/nocobase-app-plugin-agents/references/online-agents.md +0 -31
@@ -0,0 +1,634 @@
1
+ import { publicUIPageContext } from '../../../../shared/ui-message.js';
2
+ import { isDeepStrictEqual } from 'node:util';
3
+ import { isToolUIPart } from 'ai';
4
+ import { appUIMessageText, validateAppUIMessages, } from '../../../../shared/online-agent.js';
5
+ import { chatAttachmentUrl, storedAttachments, } from '../../../core/conversations/attachments.js';
6
+ import { historicalPageContext, latestPageContext, } from '../../../core/conversations/page-context.js';
7
+ import { conversationsRepo, findConversation, lockConversation, messagesRepo, } from '../../../core/conversations/conversation.store.js';
8
+ import { conflict, invalid, notFound } from '../../../kernel/errors.js';
9
+ import { asJson, jsonObject } from '../../../kernel/values.js';
10
+ import { OnlineAgentConfigurator } from '../configuration.js';
11
+ import { NativeMessages } from '../messages/projection.js';
12
+ export class NativeSessionStore {
13
+ deps;
14
+ messages = new NativeMessages(new OnlineAgentConfigurator());
15
+ constructor(deps) {
16
+ this.deps = deps;
17
+ }
18
+ async owned(userId, id, conn = this.deps.tx.read(), lock = false) {
19
+ const row = lock
20
+ ? await lockConversation(conn, id, this.deps.now())
21
+ : await findConversation(conn, id);
22
+ if (!row || row.userId !== userId)
23
+ throw notFound('Conversation');
24
+ if (!['realtime', 'background'].includes(String(jsonObject(jsonObject(row.metadata).onlineAgent).kind)))
25
+ throw invalid('A native OnlineAgent conversation is required.');
26
+ return row;
27
+ }
28
+ async write(userId, id, phase, work, outer) {
29
+ let start;
30
+ try {
31
+ return await this.deps.tx.run(async ({ conn, emit }) => {
32
+ start = performance.now();
33
+ const row = outer?.row ?? (await this.owned(userId, id, conn, true));
34
+ const result = await work(conn, row, (message) => emit({
35
+ type: 'conversation.changed',
36
+ conversationId: id,
37
+ userId,
38
+ messageId: message.id,
39
+ revision: message.metadata.revision,
40
+ }));
41
+ emit({ type: 'conversation.changed', conversationId: id, userId });
42
+ return result;
43
+ }, outer?.unit);
44
+ }
45
+ finally {
46
+ // Includes lock acquisition and commit, a conservative upper bound on lock ownership.
47
+ if (start !== undefined)
48
+ this.deps.measure?.(phase, performance.now() - start);
49
+ }
50
+ }
51
+ update(conn, row, call, extra = {}) {
52
+ const binding = jsonObject(jsonObject(row.metadata).onlineAgent);
53
+ return conversationsRepo(conn).updateMany({
54
+ filter: { id: row.id },
55
+ values: {
56
+ ...extra,
57
+ updatedAt: this.deps.now(),
58
+ metadata: asJson({
59
+ ...jsonObject(row.metadata),
60
+ onlineAgent: { ...binding, call },
61
+ }),
62
+ },
63
+ });
64
+ }
65
+ /** Independent application notifications, including after the model response has ended. */
66
+ deliver(userId, id, messageId, parts, outer) {
67
+ return this.write(userId, id, 'native.notify', async (conn, row, changed) => {
68
+ if (!parts.length ||
69
+ parts.some((part) => part.type !== 'data-notice' && part.type !== 'data-business'))
70
+ throw invalid('Notifications accept only public data parts.');
71
+ const existing = await messagesRepo(conn).findOne({
72
+ filter: { id: messageId },
73
+ });
74
+ if (existing) {
75
+ if (existing.conversationId !== id)
76
+ throw conflict('This notification ID already belongs to another conversation.');
77
+ const message = (await validateAppUIMessages([jsonObject(existing.content).original]))[0];
78
+ if (message.role !== 'system' ||
79
+ !isDeepStrictEqual(message.parts, parts))
80
+ throw conflict('This notification ID has different content.');
81
+ return message;
82
+ }
83
+ const message = {
84
+ id: messageId,
85
+ role: 'system',
86
+ metadata: {
87
+ conversationId: id,
88
+ createdAt: this.deps.now(),
89
+ revision: 1,
90
+ seq: Number(row.lastSeq) + 1,
91
+ },
92
+ parts,
93
+ };
94
+ await validateAppUIMessages([message]);
95
+ await messagesRepo(conn).createOne({
96
+ values: {
97
+ id: messageId,
98
+ conversationId: id,
99
+ seq: message.metadata.seq,
100
+ role: 'system',
101
+ content: asJson({ type: 'text', content: '', original: message }),
102
+ searchText: '',
103
+ metadata: asJson({}),
104
+ attachments: null,
105
+ toolCalls: null,
106
+ workContext: null,
107
+ runId: null,
108
+ runEventSeq: null,
109
+ createdAt: message.metadata.createdAt,
110
+ updatedAt: this.deps.now(),
111
+ },
112
+ });
113
+ await conversationsRepo(conn).updateMany({
114
+ filter: { id },
115
+ values: {
116
+ lastSeq: message.metadata.seq,
117
+ read: false,
118
+ lastMessageAt: this.deps.now(),
119
+ updatedAt: this.deps.now(),
120
+ },
121
+ });
122
+ changed(message);
123
+ return message;
124
+ }, outer);
125
+ }
126
+ /** Server startup only: the previous process must have exited under single-instance deployment. */
127
+ async recover(conn, row, call) {
128
+ const existing = call.messageId
129
+ ? await messagesRepo(conn).findOne({
130
+ filter: { id: call.messageId, conversationId: row.id },
131
+ })
132
+ : null;
133
+ const savedOutcome = jsonObject(existing?.metadata).nativeOutcome;
134
+ if (call.outcome && existing && savedOutcome === call.outcome)
135
+ return Number(row.lastSeq);
136
+ const text = 'The server stopped before this execution finished. Some actions may have completed; check their results before repeating them.';
137
+ const previous = existing
138
+ ? (await this.messages.validate([jsonObject(existing.content).original]))[0]
139
+ : undefined;
140
+ const evidence = previous ?? {
141
+ id: call.messageId,
142
+ role: 'assistant',
143
+ parts: [],
144
+ };
145
+ for (const part of evidence.parts) {
146
+ if (isToolUIPart(part) &&
147
+ !['output-available', 'output-error', 'output-denied'].includes(part.state))
148
+ Object.assign(part, {
149
+ state: 'output-error',
150
+ errorText: 'Tool result unknown. The action may have completed; check its result before repeating it.',
151
+ });
152
+ }
153
+ const message = {
154
+ id: call.messageId,
155
+ role: 'assistant',
156
+ metadata: {
157
+ ...previous?.metadata,
158
+ conversationId: row.id,
159
+ createdAt: previous?.metadata?.createdAt ?? this.deps.now(),
160
+ seq: existing ? Number(existing.seq) : Number(row.lastSeq) + 1,
161
+ revision: (previous?.metadata?.revision ?? 0) + 1,
162
+ ...(call.executionId
163
+ ? { executionId: call.executionId, turnId: call.executionId }
164
+ : {}),
165
+ },
166
+ parts: [
167
+ ...(evidence.parts.filter((part) => part.type !== 'data-notice' || part.id !== 'execution-status') ?? []),
168
+ {
169
+ type: 'data-notice',
170
+ id: 'execution-status',
171
+ data: { type: 'failed', title: text },
172
+ },
173
+ ],
174
+ };
175
+ await this.messages.validate([message]);
176
+ const publicMessage = (await this.messages.public([message]))[0];
177
+ const values = {
178
+ content: asJson({
179
+ type: 'text',
180
+ content: appUIMessageText(publicMessage),
181
+ original: message,
182
+ }),
183
+ searchText: appUIMessageText(publicMessage),
184
+ metadata: asJson({
185
+ ...jsonObject(existing?.metadata),
186
+ nativeOutcome: 'failed',
187
+ }),
188
+ updatedAt: this.deps.now(),
189
+ };
190
+ if (existing)
191
+ await messagesRepo(conn).updateMany({
192
+ filter: { id: existing.id },
193
+ values,
194
+ });
195
+ else
196
+ await messagesRepo(conn).createOne({
197
+ values: {
198
+ ...values,
199
+ id: message.id,
200
+ conversationId: row.id,
201
+ seq: message.metadata.seq,
202
+ role: 'assistant',
203
+ createdAt: message.metadata.createdAt,
204
+ toolCalls: null,
205
+ attachments: null,
206
+ workContext: null,
207
+ runId: null,
208
+ runEventSeq: null,
209
+ },
210
+ });
211
+ call.state = 'idle';
212
+ call.outcome = 'failed';
213
+ call.error = text;
214
+ delete call.result;
215
+ call.revision = message.metadata.revision;
216
+ return Math.max(Number(row.lastSeq), message.metadata.seq);
217
+ }
218
+ async history(userId, id, ids) {
219
+ await this.owned(userId, id);
220
+ const rows = await messagesRepo(this.deps.tx.read()).findMany({
221
+ filter: (f) => f.and([
222
+ f.string('conversationId').eq(id),
223
+ ...(ids ? [f.or(ids.map((id) => f.string('id').eq(id)))] : []),
224
+ ]),
225
+ sort: (s) => s.field('seq').asc(),
226
+ });
227
+ const selected = rows;
228
+ if (!selected.length)
229
+ return [];
230
+ return this.messages.public(await this.messages.validate(selected.map((row) => jsonObject(row.content).original)));
231
+ }
232
+ async page(userId, id, query) {
233
+ const owner = await this.owned(userId, id);
234
+ const rows = await messagesRepo(this.deps.tx.read()).findMany({
235
+ filter: (f) => f.and([
236
+ f.string('conversationId').eq(id),
237
+ ...(query.ids
238
+ ? [f.or(query.ids.map((id) => f.string('id').eq(id)))]
239
+ : []),
240
+ ...(query.before !== undefined
241
+ ? [f.number('seq').lt(query.before)]
242
+ : []),
243
+ ...(query.after !== undefined
244
+ ? [f.number('seq').gt(query.after)]
245
+ : []),
246
+ ]),
247
+ sort: (s) => query.after !== undefined || query.ids
248
+ ? s.field('seq').asc()
249
+ : s.field('seq').desc(),
250
+ limit: query.ids ? query.ids.length : query.limit + 1,
251
+ });
252
+ const hasMore = !query.ids && rows.length > query.limit;
253
+ const selected = rows.slice(0, query.ids ? rows.length : query.limit);
254
+ if (query.after === undefined && !query.ids)
255
+ selected.reverse();
256
+ return {
257
+ items: selected.length
258
+ ? await this.messages.public(await this.messages.validate(selected.map((row) => jsonObject(row.content).original)))
259
+ : [],
260
+ hasMore,
261
+ lastSeq: Number(owner.lastSeq),
262
+ ...(query.after !== undefined && hasMore && selected.length
263
+ ? { nextAfter: Number(selected.at(-1).seq) }
264
+ : {}),
265
+ };
266
+ }
267
+ async executionHistory(userId, id, context, page = true) {
268
+ const owner = await this.owned(userId, id);
269
+ const rows = await messagesRepo(this.deps.tx.read()).findMany({
270
+ filter: { conversationId: id },
271
+ sort: (s) => s.field('seq').asc(),
272
+ });
273
+ if (!rows.length)
274
+ return { ui: [], model: [] };
275
+ const original = await this.messages.validate(rows.map((row) => jsonObject(row.content).original));
276
+ const ui = structuredClone(original);
277
+ for (const message of ui) {
278
+ const row = rows.find((row) => row.id === message.id);
279
+ if (message.role === 'assistant' &&
280
+ ['failed', 'cancelled'].includes(String(jsonObject(row.metadata).nativeOutcome))) {
281
+ message.parts = message.parts.filter((part) => part.type === 'step-start' ||
282
+ (isToolUIPart(part) &&
283
+ ['output-available', 'output-error', 'output-denied'].includes(part.state)));
284
+ }
285
+ for (const part of message.parts) {
286
+ if (part.type !== 'file')
287
+ continue;
288
+ const file = storedAttachments(row.attachments).find((file) => chatAttachmentUrl(this.deps.basePath?.() ?? '', file.id) ===
289
+ part.url);
290
+ if (!file) {
291
+ if (message.role === 'user' &&
292
+ jsonObject(jsonObject(owner.metadata).onlineAgent).kind ===
293
+ 'background' &&
294
+ (message.metadata?.inputFiles ?? []).includes(message.parts.indexOf(part)))
295
+ continue;
296
+ if (message.role === 'assistant' && part.url.startsWith('data:'))
297
+ continue;
298
+ throw invalid('A saved file reference cannot be authorized.');
299
+ }
300
+ if (!this.deps.files)
301
+ throw invalid('Attachment content is unavailable.');
302
+ const authorized = await this.deps.files.content({ userId }, file.id);
303
+ const bytes = Buffer.from(await new Response(authorized.body).arrayBuffer());
304
+ part.url = `data:${file.mimeType};base64,${bytes.toString('base64')}`;
305
+ }
306
+ }
307
+ const model = await this.messages.model(ui);
308
+ const current = page && this.deps.contextKinds
309
+ ? await historicalPageContext(this.deps.contextKinds, this.deps.tx.read(), userId, latestPageContext(rows), context)
310
+ : undefined;
311
+ const historical = current
312
+ ? { role: 'user', content: current }
313
+ : undefined;
314
+ if (historical)
315
+ model.push(historical);
316
+ return { ui: original, model, page: historical };
317
+ }
318
+ accept(userId, id, input, config, model, executionId, messageId, expected) {
319
+ const inputs = structuredClone(Array.isArray(input) ? input : [input]);
320
+ return this.write(userId, id, 'native.accept', async (conn, row, changed) => {
321
+ const call = jsonObject(jsonObject(row.metadata).onlineAgent)
322
+ .call;
323
+ if (call?.state === 'running' ||
324
+ call?.state === 'waitingApproval' ||
325
+ call?.closing ||
326
+ row.archivedAt ||
327
+ row.syncRunId) {
328
+ throw conflict('This conversation cannot accept input.');
329
+ }
330
+ if (!inputs.length ||
331
+ inputs.some((item) => !item.id || item.id.length > 64)) {
332
+ throw invalid('A message ID of at most 64 characters is required.');
333
+ }
334
+ if (!isDeepStrictEqual(jsonObject(jsonObject(row.metadata).onlineAgent).config, expected.config) ||
335
+ row.model !== expected.model.model ||
336
+ row.modelService !== expected.model.modelService) {
337
+ throw conflict('The conversation configuration has changed. Refresh before sending.');
338
+ }
339
+ let seq = Number(row.lastSeq);
340
+ const title = [];
341
+ for (const item of inputs) {
342
+ const files = await this.deps.attachments.attach(conn, userId, { conversationId: id, messageId: item.id }, item.attachments);
343
+ const message = {
344
+ id: item.id,
345
+ role: 'user',
346
+ metadata: {
347
+ conversationId: id,
348
+ createdAt: this.deps.now(),
349
+ revision: 1,
350
+ seq: ++seq,
351
+ executionId,
352
+ turnId: executionId,
353
+ ...(item.clientId ? { clientId: item.clientId } : {}),
354
+ ...(item.providerOptions
355
+ ? { inputProviderOptions: item.providerOptions }
356
+ : {}),
357
+ ...(item.parts.some((part) => part.type === 'file')
358
+ ? {
359
+ inputFiles: item.parts.flatMap((part, index) => part.type === 'file' ? [index] : []),
360
+ }
361
+ : {}),
362
+ ...(item.workContext
363
+ ? { context: publicUIPageContext(item.workContext) }
364
+ : {}),
365
+ },
366
+ parts: [
367
+ ...item.parts,
368
+ ...files.map((file) => ({
369
+ type: 'file',
370
+ filename: file.filename,
371
+ mediaType: file.mimeType,
372
+ url: chatAttachmentUrl(this.deps.basePath?.() ?? '', file.id),
373
+ })),
374
+ ],
375
+ };
376
+ await this.messages.validate([message]);
377
+ const publicMessage = (await this.messages.public([message]))[0];
378
+ const text = appUIMessageText(publicMessage);
379
+ title.push(text);
380
+ await messagesRepo(conn).createOne({
381
+ values: {
382
+ id: message.id,
383
+ conversationId: id,
384
+ seq,
385
+ role: 'user',
386
+ content: asJson({
387
+ type: 'text',
388
+ content: text,
389
+ original: message,
390
+ }),
391
+ searchText: text,
392
+ toolCalls: null,
393
+ attachments: files.length ? asJson(files) : null,
394
+ workContext: asJson(item.workContext),
395
+ metadata: asJson(item.clientId ? { clientId: item.clientId } : {}),
396
+ runId: null,
397
+ runEventSeq: null,
398
+ createdAt: message.metadata.createdAt,
399
+ updatedAt: this.deps.now(),
400
+ },
401
+ });
402
+ changed(message);
403
+ }
404
+ const binding = jsonObject(jsonObject(row.metadata).onlineAgent);
405
+ await conversationsRepo(conn).updateMany({
406
+ filter: { id },
407
+ values: {
408
+ metadata: asJson({
409
+ ...jsonObject(row.metadata),
410
+ onlineAgent: {
411
+ ...binding,
412
+ config,
413
+ call: {
414
+ actorId: userId,
415
+ state: 'running',
416
+ executionId,
417
+ messageId,
418
+ },
419
+ },
420
+ }),
421
+ modelService: model.modelService,
422
+ model: model.model,
423
+ lastSeq: seq,
424
+ title: row.title ?? title.join(' ').slice(0, 30),
425
+ read: true,
426
+ lastMessageAt: this.deps.now(),
427
+ updatedAt: this.deps.now(),
428
+ },
429
+ });
430
+ return seq;
431
+ });
432
+ }
433
+ approve(userId, id, input) {
434
+ return this.write(userId, id, 'native.approve', async (conn, row, changed) => {
435
+ const call = jsonObject(jsonObject(row.metadata).onlineAgent)
436
+ .call;
437
+ if (!call ||
438
+ call.actorId !== userId ||
439
+ call.closing ||
440
+ call.state !== 'waitingApproval' ||
441
+ call.messageId !== input.messageId ||
442
+ call.executionId !== input.executionId ||
443
+ !call.approvalExpiresAt ||
444
+ Date.parse(call.approvalExpiresAt) <= Date.parse(this.deps.now()))
445
+ throw conflict('This approval is expired or no longer pending.');
446
+ const record = await messagesRepo(conn).findOne({
447
+ filter: { id: input.messageId, conversationId: id },
448
+ });
449
+ if (!record)
450
+ throw conflict('The approval message is unavailable.');
451
+ const publicMessage = (await this.messages.validate([jsonObject(record.content).original]))[0];
452
+ if (publicMessage.metadata?.executionId !== input.executionId)
453
+ throw conflict('The approval belongs to another execution.');
454
+ let found = 0;
455
+ for (const message of [publicMessage])
456
+ for (const part of message.parts) {
457
+ if ((part.type.startsWith('tool-') || part.type === 'dynamic-tool') &&
458
+ 'approval' in part &&
459
+ part.state === 'approval-requested' &&
460
+ part.approval.id === input.approval.id) {
461
+ Object.assign(part, {
462
+ state: 'approval-responded',
463
+ approval: { ...part.approval, ...input.approval },
464
+ });
465
+ found += 1;
466
+ }
467
+ }
468
+ if (found !== 1)
469
+ throw conflict('The requested tool approval is not pending.');
470
+ const waiting = publicMessage.parts.some((part) => isToolUIPart(part) && part.state === 'approval-requested');
471
+ publicMessage.metadata.revision += 1;
472
+ for (const part of publicMessage.parts)
473
+ if (part.type === 'data-notice' && part.id === 'execution-status')
474
+ part.data = waiting
475
+ ? { type: 'approval', title: 'Waiting for approval' }
476
+ : { type: 'running', title: 'Continuing' };
477
+ await messagesRepo(conn).updateMany({
478
+ filter: { id: record.id },
479
+ values: {
480
+ content: asJson({
481
+ ...jsonObject(record.content),
482
+ original: publicMessage,
483
+ }),
484
+ updatedAt: this.deps.now(),
485
+ },
486
+ });
487
+ await this.update(conn, row, {
488
+ ...call,
489
+ state: waiting ? 'waitingApproval' : 'running',
490
+ revision: publicMessage.metadata.revision,
491
+ });
492
+ changed(publicMessage);
493
+ return { message: publicMessage, waiting };
494
+ });
495
+ }
496
+ stop(userId, id) {
497
+ return this.write(userId, id, 'native.stopApproval', async (conn, row, changed) => {
498
+ const call = jsonObject(jsonObject(row.metadata).onlineAgent)
499
+ .call;
500
+ if (call?.state !== 'waitingApproval' || !call.messageId)
501
+ throw conflict('This execution is not waiting for approval.');
502
+ const record = await messagesRepo(conn).findOne({
503
+ filter: { id: call.messageId, conversationId: id },
504
+ });
505
+ if (!record)
506
+ throw conflict('The approval message is unavailable.');
507
+ const publicMessage = (await this.messages.validate([jsonObject(record.content).original]))[0];
508
+ for (const message of [publicMessage])
509
+ for (const part of message.parts) {
510
+ if ('approval' in part &&
511
+ 'state' in part &&
512
+ (part.state === 'approval-requested' ||
513
+ part.state === 'approval-responded') &&
514
+ part.approval)
515
+ Object.assign(part, {
516
+ state: 'output-denied',
517
+ approval: {
518
+ ...part.approval,
519
+ approved: false,
520
+ reason: 'Stopped by the conversation owner.',
521
+ },
522
+ });
523
+ }
524
+ publicMessage.metadata.revision += 1;
525
+ for (const part of publicMessage.parts)
526
+ if (part.type === 'data-notice' && part.id === 'execution-status')
527
+ part.data = { type: 'cancelled', title: 'Stopped' };
528
+ await messagesRepo(conn).updateMany({
529
+ filter: { id: record.id },
530
+ values: {
531
+ content: asJson({
532
+ ...jsonObject(record.content),
533
+ original: publicMessage,
534
+ }),
535
+ metadata: asJson({
536
+ ...jsonObject(record.metadata),
537
+ nativeOutcome: 'cancelled',
538
+ }),
539
+ updatedAt: this.deps.now(),
540
+ },
541
+ });
542
+ await this.update(conn, row, {
543
+ ...call,
544
+ state: 'idle',
545
+ outcome: 'cancelled',
546
+ revision: publicMessage.metadata.revision,
547
+ });
548
+ changed(publicMessage);
549
+ });
550
+ }
551
+ save(userId, id, snapshot, call, revision) {
552
+ return this.write(userId, id, 'native.save', async (conn, row, changed) => {
553
+ const existing = await messagesRepo(conn).findOne({
554
+ filter: { id: snapshot.message.id, conversationId: id },
555
+ });
556
+ const message = structuredClone(snapshot.message);
557
+ message.metadata.seq = existing
558
+ ? Number(existing.seq)
559
+ : Number(row.lastSeq) + 1;
560
+ message.metadata.revision = revision + 1;
561
+ await this.messages.validate([message]);
562
+ const publicMessage = (await this.messages.public([message]))[0];
563
+ const current = existing
564
+ ? jsonObject(jsonObject(existing.content).original).metadata
565
+ : null;
566
+ if (existing && jsonObject(current).revision !== revision) {
567
+ if (isDeepStrictEqual(jsonObject(existing.content).original, message))
568
+ return publicMessage;
569
+ // Only trusted approval/continuation writes can advance this same native message and execution.
570
+ // A newer revision therefore acknowledges an earlier commit whose response was lost.
571
+ if (existing.role === 'assistant' &&
572
+ typeof jsonObject(current).revision === 'number' &&
573
+ Number(jsonObject(current).revision) > revision + 1 &&
574
+ jsonObject(current).executionId === message.metadata.executionId &&
575
+ jsonObject(current).conversationId === id)
576
+ return (await this.messages.public(await this.messages.validate([
577
+ jsonObject(existing.content).original,
578
+ ])))[0];
579
+ throw conflict('The message revision has changed.');
580
+ }
581
+ const currentCall = jsonObject(jsonObject(jsonObject(row.metadata).onlineAgent).call);
582
+ if (currentCall.state !== 'running' ||
583
+ currentCall.executionId !== call.executionId ||
584
+ currentCall.messageId !== message.id)
585
+ throw conflict('This execution no longer owns the conversation.');
586
+ const values = {
587
+ content: asJson({
588
+ type: 'text',
589
+ content: appUIMessageText(publicMessage),
590
+ original: message,
591
+ }),
592
+ searchText: appUIMessageText(publicMessage),
593
+ metadata: asJson({
594
+ nativeOutcome: call.outcome,
595
+ }),
596
+ updatedAt: this.deps.now(),
597
+ };
598
+ if (existing)
599
+ await messagesRepo(conn).updateMany({
600
+ filter: { id: existing.id },
601
+ values,
602
+ });
603
+ else
604
+ await messagesRepo(conn).createOne({
605
+ values: {
606
+ ...values,
607
+ id: message.id,
608
+ conversationId: id,
609
+ seq: message.metadata.seq,
610
+ role: message.role,
611
+ toolCalls: null,
612
+ attachments: null,
613
+ workContext: null,
614
+ runId: null,
615
+ runEventSeq: null,
616
+ createdAt: message.metadata.createdAt,
617
+ },
618
+ });
619
+ const visible = publicMessage.parts.some((part) => part.type === 'text'
620
+ ? part.text.trim().length > 0
621
+ : part.type === 'file' ||
622
+ isToolUIPart(part) ||
623
+ part.type === 'data-business');
624
+ await this.update(conn, row, { ...call, revision: message.metadata.revision }, {
625
+ lastSeq: Math.max(Number(row.lastSeq), message.metadata.seq),
626
+ ...(visible ? { read: false } : {}),
627
+ lastMessageAt: this.deps.now(),
628
+ });
629
+ changed(message);
630
+ return publicMessage;
631
+ });
632
+ }
633
+ }
634
+ //# sourceMappingURL=store.js.map