@nocobase/app-plugin-agents 1.0.0-beta.19 → 1.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +13 -1
  3. package/dist/client/api/client.d.ts +29 -1
  4. package/dist/client/api/client.d.ts.map +1 -1
  5. package/dist/client/api/client.js +40 -0
  6. package/dist/client/api/client.js.map +1 -1
  7. package/dist/client/api/keys.d.ts +8 -0
  8. package/dist/client/api/keys.d.ts.map +1 -1
  9. package/dist/client/api/keys.js +19 -0
  10. package/dist/client/api/keys.js.map +1 -1
  11. package/dist/client/chat/agent-mode.d.ts +47 -0
  12. package/dist/client/chat/agent-mode.d.ts.map +1 -0
  13. package/dist/client/chat/agent-mode.js +78 -0
  14. package/dist/client/chat/agent-mode.js.map +1 -0
  15. package/dist/client/chat/api.d.ts +2 -1
  16. package/dist/client/chat/api.d.ts.map +1 -1
  17. package/dist/client/chat/api.js +21 -5
  18. package/dist/client/chat/api.js.map +1 -1
  19. package/dist/client/chat/controller.d.ts +26 -0
  20. package/dist/client/chat/controller.d.ts.map +1 -1
  21. package/dist/client/chat/controller.js +328 -7
  22. package/dist/client/chat/controller.js.map +1 -1
  23. package/dist/client/chat/message-model.d.ts +10 -2
  24. package/dist/client/chat/message-model.d.ts.map +1 -1
  25. package/dist/client/chat/message-model.js +19 -2
  26. package/dist/client/chat/message-model.js.map +1 -1
  27. package/dist/client/chat/panel-state.d.ts +3 -0
  28. package/dist/client/chat/panel-state.d.ts.map +1 -1
  29. package/dist/client/chat/panel-state.js +4 -6
  30. package/dist/client/chat/panel-state.js.map +1 -1
  31. package/dist/client/chat/provider.d.ts +13 -2
  32. package/dist/client/chat/provider.d.ts.map +1 -1
  33. package/dist/client/chat/provider.js +25 -2
  34. package/dist/client/chat/provider.js.map +1 -1
  35. package/dist/client/chat/use-chat.d.ts +8 -1
  36. package/dist/client/chat/use-chat.d.ts.map +1 -1
  37. package/dist/client/chat/use-chat.js +28 -4
  38. package/dist/client/chat/use-chat.js.map +1 -1
  39. package/dist/client/chat/use-conversation-model.d.ts +4 -1
  40. package/dist/client/chat/use-conversation-model.d.ts.map +1 -1
  41. package/dist/client/chat/use-conversation-model.js +4 -3
  42. package/dist/client/chat/use-conversation-model.js.map +1 -1
  43. package/dist/client/chat.d.ts +6 -0
  44. package/dist/client/chat.d.ts.map +1 -1
  45. package/dist/client/chat.js +2 -0
  46. package/dist/client/chat.js.map +1 -1
  47. package/dist/client/locales/de-DE.d.ts.map +1 -1
  48. package/dist/client/locales/de-DE.js +85 -3
  49. package/dist/client/locales/de-DE.js.map +1 -1
  50. package/dist/client/locales/en-US.d.ts +80 -2
  51. package/dist/client/locales/en-US.d.ts.map +1 -1
  52. package/dist/client/locales/en-US.js +81 -3
  53. package/dist/client/locales/en-US.js.map +1 -1
  54. package/dist/client/locales/es-ES.d.ts.map +1 -1
  55. package/dist/client/locales/es-ES.js +94 -3
  56. package/dist/client/locales/es-ES.js.map +1 -1
  57. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  58. package/dist/client/locales/fr-FR.js +94 -3
  59. package/dist/client/locales/fr-FR.js.map +1 -1
  60. package/dist/client/locales/id-ID.d.ts.map +1 -1
  61. package/dist/client/locales/id-ID.js +85 -3
  62. package/dist/client/locales/id-ID.js.map +1 -1
  63. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  64. package/dist/client/locales/ja-JP.js +85 -3
  65. package/dist/client/locales/ja-JP.js.map +1 -1
  66. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  67. package/dist/client/locales/pt-BR.js +94 -3
  68. package/dist/client/locales/pt-BR.js.map +1 -1
  69. package/dist/client/locales/runtimes.en-US.d.ts +4 -0
  70. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  71. package/dist/client/locales/runtimes.en-US.js +7 -3
  72. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  73. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  74. package/dist/client/locales/runtimes.zh-CN.js +6 -2
  75. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  76. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  77. package/dist/client/locales/vi-VN.js +85 -3
  78. package/dist/client/locales/vi-VN.js.map +1 -1
  79. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  80. package/dist/client/locales/zh-CN.js +81 -3
  81. package/dist/client/locales/zh-CN.js.map +1 -1
  82. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  83. package/dist/client/locales/zh-TW.js +85 -3
  84. package/dist/client/locales/zh-TW.js.map +1 -1
  85. package/dist/client/online/service-editor.js +6 -1
  86. package/dist/client/online/service-editor.js.map +1 -1
  87. package/dist/client/pages/agents/agent-dialog.js +1 -1
  88. package/dist/client/pages/agents/agent-dialog.js.map +1 -1
  89. package/dist/client/pages/agents/available-models-drawer.d.ts +7 -0
  90. package/dist/client/pages/agents/available-models-drawer.d.ts.map +1 -0
  91. package/dist/client/pages/agents/available-models-drawer.js +330 -0
  92. package/dist/client/pages/agents/available-models-drawer.js.map +1 -0
  93. package/dist/client/pages/agents/cleanup-drawer.d.ts +7 -0
  94. package/dist/client/pages/agents/cleanup-drawer.d.ts.map +1 -0
  95. package/dist/client/pages/agents/cleanup-drawer.js +214 -0
  96. package/dist/client/pages/agents/cleanup-drawer.js.map +1 -0
  97. package/dist/client/pages/agents/runner-agents.d.ts.map +1 -1
  98. package/dist/client/pages/agents/runner-agents.js +21 -111
  99. package/dist/client/pages/agents/runner-agents.js.map +1 -1
  100. package/dist/client/pages/runtimes/connect.d.ts.map +1 -1
  101. package/dist/client/pages/runtimes/connect.js +4 -5
  102. package/dist/client/pages/runtimes/connect.js.map +1 -1
  103. package/dist/client/pages/runtimes/index.js +1 -1
  104. package/dist/client/pages/runtimes/index.js.map +1 -1
  105. package/dist/client/pages/runtimes/quota.d.ts +1 -1
  106. package/dist/client/pages/runtimes/quota.d.ts.map +1 -1
  107. package/dist/client/pages/runtimes/quota.js +4 -1
  108. package/dist/client/pages/runtimes/quota.js.map +1 -1
  109. package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -1
  110. package/dist/client/pages/runtimes/runner-cells.js +3 -1
  111. package/dist/client/pages/runtimes/runner-cells.js.map +1 -1
  112. package/dist/client/pages/runtimes/runner-overview.d.ts.map +1 -1
  113. package/dist/client/pages/runtimes/runner-overview.js +6 -8
  114. package/dist/client/pages/runtimes/runner-overview.js.map +1 -1
  115. package/dist/client/pages/runtimes/runner-sheet.js +3 -1
  116. package/dist/client/pages/runtimes/runner-sheet.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 +4 -6
  119. package/dist/client/pages/runtimes/runner-tools.js.map +1 -1
  120. package/dist/database/migrations/.manifest.json +4 -0
  121. package/dist/database/migrations/202610280001_ag_explicit_runner_tools.d.ts +5 -0
  122. package/dist/database/migrations/202610280001_ag_explicit_runner_tools.d.ts.map +1 -0
  123. package/dist/database/migrations/202610280001_ag_explicit_runner_tools.js +23 -0
  124. package/dist/database/migrations/202610280001_ag_explicit_runner_tools.js.map +1 -0
  125. package/dist/package.json +20 -2
  126. package/dist/server/composition.d.ts.map +1 -1
  127. package/dist/server/composition.js +4 -0
  128. package/dist/server/composition.js.map +1 -1
  129. package/dist/server/core/agents/agent.history.d.ts +2 -0
  130. package/dist/server/core/agents/agent.history.d.ts.map +1 -1
  131. package/dist/server/core/agents/agent.history.js +4 -0
  132. package/dist/server/core/agents/agent.history.js.map +1 -1
  133. package/dist/server/core/agents/agent.service.d.ts +43 -1
  134. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  135. package/dist/server/core/agents/agent.service.js +207 -26
  136. package/dist/server/core/agents/agent.service.js.map +1 -1
  137. package/dist/server/core/agents/agent.store.d.ts +2 -0
  138. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  139. package/dist/server/core/agents/agent.store.js +4 -0
  140. package/dist/server/core/agents/agent.store.js.map +1 -1
  141. package/dist/server/core/agents/available-models.d.ts +41 -0
  142. package/dist/server/core/agents/available-models.d.ts.map +1 -0
  143. package/dist/server/core/agents/available-models.js +225 -0
  144. package/dist/server/core/agents/available-models.js.map +1 -0
  145. package/dist/server/core/agents/index.d.ts +1 -0
  146. package/dist/server/core/agents/index.d.ts.map +1 -1
  147. package/dist/server/core/agents/index.js +1 -0
  148. package/dist/server/core/agents/index.js.map +1 -1
  149. package/dist/server/core/conversations/attachments.d.ts +1 -1
  150. package/dist/server/core/conversations/attachments.d.ts.map +1 -1
  151. package/dist/server/core/conversations/attachments.js +2 -2
  152. package/dist/server/core/conversations/attachments.js.map +1 -1
  153. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  154. package/dist/server/core/conversations/conversation.service.js +7 -0
  155. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  156. package/dist/server/index.d.ts +1 -0
  157. package/dist/server/index.d.ts.map +1 -1
  158. package/dist/server/index.js.map +1 -1
  159. package/dist/server/kernel/events.d.ts +9 -0
  160. package/dist/server/kernel/events.d.ts.map +1 -1
  161. package/dist/server/kernel/events.js.map +1 -1
  162. package/dist/server/online/agent/configuration.d.ts +2 -0
  163. package/dist/server/online/agent/configuration.d.ts.map +1 -1
  164. package/dist/server/online/agent/configuration.js +21 -2
  165. package/dist/server/online/agent/configuration.js.map +1 -1
  166. package/dist/server/online/agent/contracts.d.ts +5 -0
  167. package/dist/server/online/agent/contracts.d.ts.map +1 -1
  168. package/dist/server/online/agent/index.d.ts +1 -0
  169. package/dist/server/online/agent/index.d.ts.map +1 -1
  170. package/dist/server/online/agent/index.js.map +1 -1
  171. package/dist/server/online/agent/messages/resend.d.ts +7 -0
  172. package/dist/server/online/agent/messages/resend.d.ts.map +1 -0
  173. package/dist/server/online/agent/messages/resend.js +58 -0
  174. package/dist/server/online/agent/messages/resend.js.map +1 -0
  175. package/dist/server/online/agent/native/backend.d.ts +4 -0
  176. package/dist/server/online/agent/native/backend.d.ts.map +1 -1
  177. package/dist/server/online/agent/native/backend.js +17 -24
  178. package/dist/server/online/agent/native/backend.js.map +1 -1
  179. package/dist/server/online/agent/native/execution.d.ts +6 -12
  180. package/dist/server/online/agent/native/execution.d.ts.map +1 -1
  181. package/dist/server/online/agent/native/execution.js +38 -11
  182. package/dist/server/online/agent/native/execution.js.map +1 -1
  183. package/dist/server/online/agent/native/session.d.ts +2 -0
  184. package/dist/server/online/agent/native/session.d.ts.map +1 -1
  185. package/dist/server/online/agent/native/session.js +11 -0
  186. package/dist/server/online/agent/native/session.js.map +1 -1
  187. package/dist/server/online/agent/native/types.d.ts +20 -0
  188. package/dist/server/online/agent/native/types.d.ts.map +1 -1
  189. package/dist/server/online/agent/persistence/store.d.ts +17 -0
  190. package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
  191. package/dist/server/online/agent/persistence/store.js +118 -17
  192. package/dist/server/online/agent/persistence/store.js.map +1 -1
  193. package/dist/server/online/agent/runner/backend.d.ts +1 -0
  194. package/dist/server/online/agent/runner/backend.d.ts.map +1 -1
  195. package/dist/server/online/agent/runner/backend.js +3 -0
  196. package/dist/server/online/agent/runner/backend.js.map +1 -1
  197. package/dist/server/online/agent/service.d.ts +2 -0
  198. package/dist/server/online/agent/service.d.ts.map +1 -1
  199. package/dist/server/online/agent/service.js +2 -0
  200. package/dist/server/online/agent/service.js.map +1 -1
  201. package/dist/server/online/agent/types.d.ts +5 -0
  202. package/dist/server/online/agent/types.d.ts.map +1 -1
  203. package/dist/server/online/agent/web-search.d.ts +13 -0
  204. package/dist/server/online/agent/web-search.d.ts.map +1 -0
  205. package/dist/server/online/agent/web-search.js +65 -0
  206. package/dist/server/online/agent/web-search.js.map +1 -0
  207. package/dist/server/online/gateway.d.ts +13 -0
  208. package/dist/server/online/gateway.d.ts.map +1 -1
  209. package/dist/server/online/gateway.js +116 -2
  210. package/dist/server/online/gateway.js.map +1 -1
  211. package/dist/server/online/index.d.ts +1 -1
  212. package/dist/server/online/index.d.ts.map +1 -1
  213. package/dist/server/online/index.js.map +1 -1
  214. package/dist/server/online/providers.d.ts +6 -0
  215. package/dist/server/online/providers.d.ts.map +1 -1
  216. package/dist/server/online/providers.js +29 -1
  217. package/dist/server/online/providers.js.map +1 -1
  218. package/dist/server/online/search/alibaba.d.ts +10 -0
  219. package/dist/server/online/search/alibaba.d.ts.map +1 -0
  220. package/dist/server/online/search/alibaba.js +34 -0
  221. package/dist/server/online/search/alibaba.js.map +1 -0
  222. package/dist/server/online/search/anthropic.d.ts +12 -0
  223. package/dist/server/online/search/anthropic.d.ts.map +1 -0
  224. package/dist/server/online/search/anthropic.js +62 -0
  225. package/dist/server/online/search/anthropic.js.map +1 -0
  226. package/dist/server/online/search/budget.d.ts +13 -0
  227. package/dist/server/online/search/budget.d.ts.map +1 -0
  228. package/dist/server/online/search/budget.js +63 -0
  229. package/dist/server/online/search/budget.js.map +1 -0
  230. package/dist/server/online/search/capabilities.d.ts +7 -0
  231. package/dist/server/online/search/capabilities.d.ts.map +1 -0
  232. package/dist/server/online/search/capabilities.js +75 -0
  233. package/dist/server/online/search/capabilities.js.map +1 -0
  234. package/dist/server/online/search/contracts.d.ts +20 -0
  235. package/dist/server/online/search/contracts.d.ts.map +1 -0
  236. package/dist/server/online/search/contracts.js +2 -0
  237. package/dist/server/online/search/contracts.js.map +1 -0
  238. package/dist/server/online/search/google.d.ts +12 -0
  239. package/dist/server/online/search/google.d.ts.map +1 -0
  240. package/dist/server/online/search/google.js +51 -0
  241. package/dist/server/online/search/google.js.map +1 -0
  242. package/dist/server/online/search/openai.d.ts +18 -0
  243. package/dist/server/online/search/openai.d.ts.map +1 -0
  244. package/dist/server/online/search/openai.js +51 -0
  245. package/dist/server/online/search/openai.js.map +1 -0
  246. package/dist/server/online/search/prompts.d.ts +5 -0
  247. package/dist/server/online/search/prompts.d.ts.map +1 -0
  248. package/dist/server/online/search/prompts.js +28 -0
  249. package/dist/server/online/search/prompts.js.map +1 -0
  250. package/dist/server/online/search/results.d.ts +2 -0
  251. package/dist/server/online/search/results.d.ts.map +1 -0
  252. package/dist/server/online/search/results.js +2 -0
  253. package/dist/server/online/search/results.js.map +1 -0
  254. package/dist/server/online/services.d.ts +2 -0
  255. package/dist/server/online/services.d.ts.map +1 -1
  256. package/dist/server/online/services.js +17 -2
  257. package/dist/server/online/services.js.map +1 -1
  258. package/dist/server/providers/agents.d.ts.map +1 -1
  259. package/dist/server/providers/agents.js +11 -0
  260. package/dist/server/providers/agents.js.map +1 -1
  261. package/dist/server/routes/admin.d.ts.map +1 -1
  262. package/dist/server/routes/admin.js +133 -2
  263. package/dist/server/routes/admin.js.map +1 -1
  264. package/dist/server/routes/chat.d.ts.map +1 -1
  265. package/dist/server/routes/chat.js +34 -1
  266. package/dist/server/routes/chat.js.map +1 -1
  267. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  268. package/dist/server/routes/runners/admin.js +27 -18
  269. package/dist/server/routes/runners/admin.js.map +1 -1
  270. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  271. package/dist/server/routes/runners/runner.js +3 -0
  272. package/dist/server/routes/runners/runner.js.map +1 -1
  273. package/dist/server/routes/runners/runs.d.ts.map +1 -1
  274. package/dist/server/routes/runners/runs.js +9 -3
  275. package/dist/server/routes/runners/runs.js.map +1 -1
  276. package/dist/server/routes/schemas.d.ts +38 -2
  277. package/dist/server/routes/schemas.d.ts.map +1 -1
  278. package/dist/server/routes/schemas.js +147 -1
  279. package/dist/server/routes/schemas.js.map +1 -1
  280. package/dist/server/runners/runner.service.d.ts.map +1 -1
  281. package/dist/server/runners/runner.service.js +22 -7
  282. package/dist/server/runners/runner.service.js.map +1 -1
  283. package/dist/server/runners/runner.store.d.ts +1 -1
  284. package/dist/server/runners/runner.store.d.ts.map +1 -1
  285. package/dist/server/runners/runner.store.js +4 -4
  286. package/dist/server/runners/runner.store.js.map +1 -1
  287. package/dist/server/runners/tool-detection.d.ts +3 -0
  288. package/dist/server/runners/tool-detection.d.ts.map +1 -0
  289. package/dist/server/runners/tool-detection.js +9 -0
  290. package/dist/server/runners/tool-detection.js.map +1 -0
  291. package/dist/shared/agents.d.ts +114 -0
  292. package/dist/shared/agents.d.ts.map +1 -1
  293. package/dist/shared/agents.js +16 -1
  294. package/dist/shared/agents.js.map +1 -1
  295. package/dist/shared/conversations.d.ts +12 -0
  296. package/dist/shared/conversations.d.ts.map +1 -1
  297. package/dist/shared/conversations.js.map +1 -1
  298. package/dist/shared/model-catalog.d.ts +14 -2
  299. package/dist/shared/model-catalog.d.ts.map +1 -1
  300. package/dist/shared/model-catalog.js +46 -2
  301. package/dist/shared/model-catalog.js.map +1 -1
  302. package/dist/shared/models.d.ts +9 -0
  303. package/dist/shared/models.d.ts.map +1 -1
  304. package/dist/shared/models.js.map +1 -1
  305. package/dist/shared/resend.d.ts +10 -0
  306. package/dist/shared/resend.d.ts.map +1 -0
  307. package/dist/shared/resend.js +2 -0
  308. package/dist/shared/resend.js.map +1 -0
  309. package/dist/shared/runners.d.ts +7 -8
  310. package/dist/shared/runners.d.ts.map +1 -1
  311. package/dist/shared/runners.js +17 -11
  312. package/dist/shared/runners.js.map +1 -1
  313. package/dist/shared/web-search-results.d.ts +16 -0
  314. package/dist/shared/web-search-results.d.ts.map +1 -0
  315. package/dist/shared/web-search-results.js +103 -0
  316. package/dist/shared/web-search-results.js.map +1 -0
  317. package/dist/shared/web-search.d.ts +40 -0
  318. package/dist/shared/web-search.d.ts.map +1 -0
  319. package/dist/shared/web-search.js +15 -0
  320. package/dist/shared/web-search.js.map +1 -0
  321. package/docs/message-resend.md +39 -0
  322. package/docs/native-web-search.md +76 -0
  323. package/docs/ui-message-clients.md +7 -1
  324. package/package.json +22 -12
  325. package/skills/nocobase-app-plugin-agents/SKILL.md +5 -2
  326. package/skills/nocobase-app-plugin-agents/references/online-agent.md +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../client/chat/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../client/chat/api.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ import type { OnlineAgentResendOptions } from '../../shared/resend.js';
2
+ import type { ConversationChanged } from '../../shared/conversations.js';
3
+ export type ResendResult = {
4
+ outcome: 'accepted' | 'rejected' | 'unknown';
5
+ needsSync?: boolean;
6
+ error?: unknown;
7
+ };
8
+ type HistoryReplacement = Extract<ConversationChanged, {
9
+ kind: 'conversation.historyReplaced';
10
+ }>;
1
11
  import { Chat } from '@ai-sdk/react';
2
12
  import { type ReactElement, type ReactNode } from 'react';
3
13
  import type { ConversationDetail } from '../../shared/conversations.js';
@@ -13,6 +23,10 @@ export type StreamState = {
13
23
  /** Application coordination around one SDK Chat per conversation, shared by every surface. */
14
24
  export declare class ChatController {
15
25
  readonly api: ChatApi;
26
+ private historyEpochs;
27
+ private replacements;
28
+ private resendRequests;
29
+ private reconciles;
16
30
  readonly submissions: ChatSubmissions;
17
31
  private chats;
18
32
  private histories;
@@ -46,6 +60,17 @@ export declare class ChatController {
46
60
  };
47
61
  private historyMeta;
48
62
  dispatch(id: string, action: MessagesAction): void;
63
+ private historyLifetime;
64
+ private invalidateHistoryReads;
65
+ historyReplaced(event: HistoryReplacement): void;
66
+ private replaceHistory;
67
+ private resendAccepted;
68
+ isResending(id: string): boolean;
69
+ resend(id: string, options: OnlineAgentResendOptions & {
70
+ messageId: string;
71
+ }): Promise<ResendResult>;
72
+ /** Only a successful read of every requested ID proves absence; never delete an unqueried message. */
73
+ private reconcile;
49
74
  loadHistory(id: string, older?: boolean, fresh?: boolean): Promise<void>;
50
75
  reread(id: string, ids: readonly string[]): Promise<AppUIMessage[]>;
51
76
  watch(id: string): () => void;
@@ -80,4 +105,5 @@ export declare function ChatClientProvider({ children, }: {
80
105
  export declare function useChatController(): ChatController;
81
106
  export declare function useChatStream(id: string | null): StreamState | undefined;
82
107
  export declare function useChatStreamState(id: string | null): StreamState | undefined;
108
+ export {};
83
109
  //# sourceMappingURL=controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../client/chat/controller.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../client/chat/controller.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- /* eslint-disable react-refresh/only-export-components -- shared controller provider and hooks */
2
+ import { ApiClientError } from '@nocobase/app-client';
3
3
  import { CancelledError } from '@tanstack/react-query';
4
4
  import { isToolUIPart } from 'ai';
5
5
  import { Chat, useChat as useSDKChat } from '@ai-sdk/react';
@@ -22,6 +22,10 @@ function deferred() {
22
22
  /** Application coordination around one SDK Chat per conversation, shared by every surface. */
23
23
  export class ChatController {
24
24
  api;
25
+ historyEpochs = new Map();
26
+ replacements = new Map();
27
+ resendRequests = new Map();
28
+ reconciles = new Map();
25
29
  submissions;
26
30
  chats = new Map();
27
31
  histories = new Map();
@@ -65,7 +69,7 @@ export class ChatController {
65
69
  const admission = this.admissions.get(id);
66
70
  if (!this.disposed && admission?.clientId === clientId)
67
71
  admission.gate.resolve();
68
- }),
72
+ }, (options) => this.resendAccepted(id, options)),
69
73
  onFinish: () => {
70
74
  if (!this.disposed && this.chats.get(id) === chat)
71
75
  this.scheduleRefresh(id);
@@ -127,6 +131,15 @@ export class ChatController {
127
131
  this.submissions.editRejected(action.clientId);
128
132
  return;
129
133
  }
134
+ if (action.type === 'confirmed') {
135
+ const boundary = this.replacements.get(id), seq = action.message.metadata?.seq;
136
+ if (boundary &&
137
+ seq !== undefined &&
138
+ seq > boundary.seq &&
139
+ seq <= boundary.lastSeq &&
140
+ action.message.metadata?.executionId !== boundary.executionId)
141
+ return;
142
+ }
130
143
  const current = this.historyMeta(id);
131
144
  const before = this.history(id).state;
132
145
  const next = messagesReducer(before, action);
@@ -154,6 +167,8 @@ export class ChatController {
154
167
  });
155
168
  chat.messages = mergeUIMessages(chat.messages, batch, activeId);
156
169
  }
170
+ if (action.type === 'replaceHistory')
171
+ chat.messages = [...next.items];
157
172
  const { items: _items, pending: _pending, ...page } = next;
158
173
  this.histories.set(id, {
159
174
  ...current,
@@ -164,6 +179,296 @@ export class ChatController {
164
179
  });
165
180
  this.publish();
166
181
  }
182
+ historyLifetime(id) {
183
+ const active = this.lifetime(), epoch = this.historyEpochs.get(id) ?? 0;
184
+ return () => active() && (this.historyEpochs.get(id) ?? 0) === epoch;
185
+ }
186
+ invalidateHistoryReads(id) {
187
+ this.historyEpochs.set(id, (this.historyEpochs.get(id) ?? 0) + 1);
188
+ this.loads.delete(id);
189
+ this.refreshAgain.delete(id);
190
+ this.revisionQueue.delete(id);
191
+ this.deferredReads.delete(id);
192
+ for (const key of this.messageVersions.keys())
193
+ if (key.startsWith(`${id}:`))
194
+ this.messageVersions.delete(key);
195
+ this.historyMeta(id).loadingOlder = false;
196
+ }
197
+ historyReplaced(event) {
198
+ if (this.disposed || !this.replaceHistory(event))
199
+ return;
200
+ const active = this.historyLifetime(event.conversationId);
201
+ void this.reread(event.conversationId, [event.messageId])
202
+ .then(async () => {
203
+ if (!active())
204
+ return;
205
+ await this.refresh(event.conversationId);
206
+ if (!this.disposed &&
207
+ !this.resendRequests.has(event.conversationId) &&
208
+ this.replacements.get(event.conversationId)?.executionId ===
209
+ event.executionId)
210
+ await this.resume(event.conversationId);
211
+ })
212
+ .catch((error) => {
213
+ if (active()) {
214
+ this.historyMeta(event.conversationId).error = error;
215
+ this.publish();
216
+ }
217
+ });
218
+ }
219
+ replaceHistory(event) {
220
+ const id = event.conversationId, previous = this.replacements.get(id);
221
+ if (previous?.executionId === event.executionId ||
222
+ (previous && previous.lastSeq > event.lastSeq))
223
+ return false;
224
+ this.invalidateHistoryReads(id);
225
+ this.resuming.delete(id);
226
+ this.replacements.set(id, event);
227
+ this.dispatch(id, { type: 'replaceHistory', ...event });
228
+ this.historyMeta(id).loadedThrough = Math.max(this.historyMeta(id).loadedThrough, event.lastSeq);
229
+ const chat = this.chat(id);
230
+ // A replacement owns a different response. Detach only the local subscriber, never business Stop.
231
+ if (!this.resendRequests.has(id))
232
+ this.renewChat(id, chat.messages);
233
+ return true;
234
+ }
235
+ async resendAccepted(id, options) {
236
+ const request = this.resendRequests.get(id);
237
+ if (!request || this.disposed)
238
+ throw new CancelledError({ silent: true });
239
+ request.accepted = true;
240
+ const active = this.lifetime();
241
+ try {
242
+ const page = await this.api.messages(id, { ids: options.messageId });
243
+ if (!active() || this.resendRequests.get(id) !== request)
244
+ throw new CancelledError({ silent: true });
245
+ const target = page.items.find((m) => m.id === options.messageId && m.role === 'user');
246
+ if (!target?.metadata?.executionId || target.metadata.seq === undefined)
247
+ throw new Error('Accepted input requires history synchronization.');
248
+ this.replaceHistory({
249
+ kind: 'conversation.historyReplaced',
250
+ conversationId: id,
251
+ messageId: target.id,
252
+ seq: target.metadata.seq,
253
+ revision: target.metadata.revision,
254
+ lastSeq: page.lastSeq,
255
+ executionId: target.metadata.executionId,
256
+ });
257
+ this.dispatch(id, { type: 'confirmed', message: target });
258
+ request.gate.resolve({ outcome: 'accepted' });
259
+ }
260
+ catch (error) {
261
+ request.gate.resolve({ outcome: 'accepted', needsSync: true, error });
262
+ throw error;
263
+ }
264
+ }
265
+ isResending(id) {
266
+ return this.resendRequests.has(id);
267
+ }
268
+ async resend(id, options) {
269
+ const detail = agentsQueryClient().getQueryData(chatKeys.conversation(id));
270
+ const chat = this.chat(id);
271
+ if (this.disposed ||
272
+ this.resendRequests.has(id) ||
273
+ this.approvalRequests.has(id) ||
274
+ this.stopRequests.has(id) ||
275
+ chat.status === 'submitted' ||
276
+ chat.status === 'streaming' ||
277
+ (detail && (detail.mode !== 'online' || chatIsRunning(detail))))
278
+ return {
279
+ outcome: 'rejected',
280
+ error: new Error('This conversation is busy or does not support resend.'),
281
+ };
282
+ const request = { accepted: false, gate: deferred() };
283
+ this.resendRequests.set(id, request);
284
+ this.publish();
285
+ const active = this.lifetime();
286
+ this.commandVersions.set(id, (this.commandVersions.get(id) ?? 0) + 1);
287
+ this.nextDetailVersion(id);
288
+ try {
289
+ await agentsQueryClient().cancelQueries({
290
+ queryKey: chatKeys.conversation(id),
291
+ exact: true,
292
+ });
293
+ if (!active())
294
+ throw new CancelledError({ silent: true });
295
+ let target = chat.messages.find((message) => message.id === options.messageId && message.role === 'user');
296
+ if (!target) {
297
+ const lookupActive = this.historyLifetime(id);
298
+ try {
299
+ const page = await this.api.messages(id, { ids: options.messageId });
300
+ if (!active() || !lookupActive())
301
+ throw new CancelledError({ silent: true });
302
+ target = page.items.find((message) => message.id === options.messageId && message.role === 'user');
303
+ if (target)
304
+ this.dispatch(id, { type: 'confirmed', message: target });
305
+ }
306
+ catch (error) {
307
+ return { outcome: 'rejected', error };
308
+ }
309
+ }
310
+ if (!target)
311
+ return {
312
+ outcome: 'rejected',
313
+ error: new Error('The resend target is no longer available.'),
314
+ };
315
+ const before = [...chat.messages];
316
+ this.invalidateHistoryReads(id);
317
+ const historyActive = this.historyLifetime(id);
318
+ chat.clearError();
319
+ const body = { resendInput: structuredClone(options) };
320
+ let textReplaced = false;
321
+ const sending = options.input
322
+ ? chat.sendMessage({
323
+ ...target,
324
+ messageId: target.id,
325
+ parts: [
326
+ ...target.parts.flatMap((part) => {
327
+ if (part.type !== 'text')
328
+ return [part];
329
+ if (textReplaced)
330
+ return [];
331
+ textReplaced = true;
332
+ return [
333
+ { type: 'text', text: options.input.text },
334
+ ];
335
+ }),
336
+ ...(!target.parts.some((part) => part.type === 'text')
337
+ ? [{ type: 'text', text: options.input.text }]
338
+ : []),
339
+ ],
340
+ }, { body })
341
+ : chat.regenerate({ messageId: target.id, body });
342
+ const failed = async (error) => {
343
+ if (request.accepted) {
344
+ request.gate.resolve({ outcome: 'accepted', needsSync: true, error });
345
+ return;
346
+ }
347
+ const rejected = error instanceof ApiClientError &&
348
+ error.status >= 400 &&
349
+ error.status < 500 &&
350
+ error.status !== 408 &&
351
+ error.status !== 499;
352
+ const outcome = rejected ? 'rejected' : 'unknown';
353
+ let needsSync = false;
354
+ if (active() && historyActive()) {
355
+ if (outcome === 'rejected')
356
+ chat.messages = before;
357
+ try {
358
+ // Unknown admission never restores a stale snapshot or retries the POST.
359
+ await this.reread(id, before.map((message) => message.id));
360
+ }
361
+ catch {
362
+ needsSync = true;
363
+ }
364
+ }
365
+ request.gate.resolve({ outcome, needsSync, error });
366
+ };
367
+ void sending.then(() => {
368
+ if (!request.accepted)
369
+ return failed(chat.error ??
370
+ new Error('Resend admission is unknown. Synchronize before trying again.'));
371
+ }, failed);
372
+ return await request.gate.promise;
373
+ }
374
+ finally {
375
+ if (active() && this.resendRequests.get(id) === request) {
376
+ this.resendRequests.delete(id);
377
+ this.publish();
378
+ void this.refresh(id).catch(() => { });
379
+ }
380
+ }
381
+ }
382
+ /** Only a successful read of every requested ID proves absence; never delete an unqueried message. */
383
+ async reconcile(id, detail) {
384
+ const pending = this.reconciles.get(id);
385
+ if (pending)
386
+ return pending;
387
+ if (this.resendRequests.has(id))
388
+ return;
389
+ this.invalidateHistoryReads(id);
390
+ const active = this.historyLifetime(id);
391
+ const initial = this.chat(id).messages.filter((m) => m.metadata?.seq !== undefined);
392
+ const task = (async () => {
393
+ const found = [];
394
+ for (let offset = 0; offset < initial.length; offset += 100) {
395
+ const page = await this.api.messages(id, {
396
+ ids: initial
397
+ .slice(offset, offset + 100)
398
+ .map((m) => m.id)
399
+ .join(','),
400
+ });
401
+ if (!active())
402
+ return;
403
+ found.push(...page.items);
404
+ }
405
+ const present = new Set(found.map((m) => m.id));
406
+ const missing = new Set(initial.filter((m) => !present.has(m.id)).map((m) => m.id));
407
+ let window;
408
+ if (missing.size) {
409
+ const oldest = Math.min(...initial.map((m) => m.metadata.seq));
410
+ const seen = new Set();
411
+ do {
412
+ window = await this.api.messages(id, window?.nextCursor ? { pageToken: window.nextCursor } : {});
413
+ if (!active())
414
+ return;
415
+ found.push(...window.items);
416
+ if (!window.nextCursor ||
417
+ !window.items.length ||
418
+ window.items[0].metadata.seq <= oldest)
419
+ break;
420
+ if (seen.has(window.nextCursor))
421
+ throw new Error('History pagination did not advance.');
422
+ seen.add(window.nextCursor);
423
+ } while (window.nextCursor);
424
+ }
425
+ if (!active())
426
+ return;
427
+ const changed = found.find((m) => m.role === 'user' &&
428
+ initial.some((old) => old.id === m.id &&
429
+ (old.metadata?.revision ?? 0) < (m.metadata?.revision ?? 0)));
430
+ if (changed?.metadata?.executionId &&
431
+ changed.metadata.seq !== undefined) {
432
+ this.replaceHistory({
433
+ kind: 'conversation.historyReplaced',
434
+ conversationId: id,
435
+ messageId: changed.id,
436
+ seq: changed.metadata.seq,
437
+ revision: changed.metadata.revision,
438
+ lastSeq: window?.lastSeq ?? this.history(id).state.lastSeq,
439
+ executionId: changed.metadata.executionId,
440
+ });
441
+ }
442
+ const owner = this.chat(id), response = owner.messages.at(-1);
443
+ if (owner.status === 'streaming' &&
444
+ response?.id &&
445
+ detail.execution?.messageId &&
446
+ response.id !== detail.execution.messageId) {
447
+ this.renewChat(id, owner.messages.filter((m) => m.id !== response.id));
448
+ }
449
+ const chat = this.chat(id);
450
+ const receiving = chat.status === 'submitted' || chat.status === 'streaming';
451
+ const activeId = receiving && chat.messages.at(-1)?.id === detail.execution?.messageId
452
+ ? chat.messages.at(-1)?.id
453
+ : undefined;
454
+ chat.messages = mergeUIMessages(chat.messages.filter((m) => !missing.has(m.id) || m.id === activeId), found, activeId);
455
+ if (window)
456
+ this.historyMeta(id).page = {
457
+ ...this.historyMeta(id).page,
458
+ hasMore: window.hasMore,
459
+ olderToken: window.nextCursor,
460
+ };
461
+ this.publish();
462
+ })();
463
+ this.reconciles.set(id, task);
464
+ try {
465
+ await task;
466
+ }
467
+ finally {
468
+ if (this.reconciles.get(id) === task)
469
+ this.reconciles.delete(id);
470
+ }
471
+ }
167
472
  async loadHistory(id, older = false, fresh = false) {
168
473
  if (this.disposed)
169
474
  return;
@@ -173,7 +478,7 @@ export class ChatController {
173
478
  this.refreshAgain.add(id);
174
479
  return pending;
175
480
  }
176
- const active = this.lifetime();
481
+ const active = this.historyLifetime(id);
177
482
  const initial = this.history(id);
178
483
  if (older && !initial.state.olderToken)
179
484
  return;
@@ -240,7 +545,7 @@ export class ChatController {
240
545
  if (this.disposed)
241
546
  return [];
242
547
  const found = [];
243
- const active = this.lifetime();
548
+ const active = this.historyLifetime(id);
244
549
  for (let offset = 0; offset < ids.length; offset += 100) {
245
550
  const page = await this.api.messages(id, {
246
551
  ids: ids.slice(offset, offset + 100).join(','),
@@ -274,7 +579,7 @@ export class ChatController {
274
579
  if (Date.now() - current.last < interval)
275
580
  return;
276
581
  current.last = Date.now();
277
- void this.loadHistory(id, false, true);
582
+ void this.refresh(id).catch(() => { });
278
583
  }, 5000);
279
584
  watch = { refs: 0, timer, last: Date.now() };
280
585
  this.watches.set(id, watch);
@@ -290,7 +595,9 @@ export class ChatController {
290
595
  }
291
596
  reconnect() {
292
597
  for (const id of this.watches.keys())
293
- void this.resume(id);
598
+ void this.refresh(id)
599
+ .then(() => this.resume(id))
600
+ .catch(() => { });
294
601
  }
295
602
  messageUpdated(id, messageId, revision) {
296
603
  const key = `${id}:${messageId}`;
@@ -306,7 +613,7 @@ export class ChatController {
306
613
  }
307
614
  const queue = { pending: new Set([messageId]), task: Promise.resolve() };
308
615
  this.revisionQueue.set(id, queue);
309
- const active = this.lifetime();
616
+ const active = this.historyLifetime(id);
310
617
  queue.task = (async () => {
311
618
  const attempted = new Set();
312
619
  try {
@@ -340,6 +647,8 @@ export class ChatController {
340
647
  const chat = this.chat(id);
341
648
  if (chat.status === 'submitted' || chat.status === 'streaming')
342
649
  throw new Error('This conversation is already receiving a response.');
650
+ if (this.resendRequests.has(id))
651
+ throw new Error('This conversation is busy.');
343
652
  const admitted = deferred();
344
653
  this.admissions.set(id, { clientId: input.clientId, gate: admitted });
345
654
  this.recoveryErrors.delete(id);
@@ -427,7 +736,9 @@ export class ChatController {
427
736
  if (chat.status === 'submitted' || chat.status === 'streaming')
428
737
  return;
429
738
  const active = this.lifetime();
739
+ const replacement = this.replacements.get(id);
430
740
  const canResume = () => active() &&
741
+ this.replacements.get(id) === replacement &&
431
742
  this.chats.get(id) === chat &&
432
743
  chat.status !== 'submitted' &&
433
744
  chat.status !== 'streaming';
@@ -496,6 +807,7 @@ export class ChatController {
496
807
  throw new CancelledError({ silent: true });
497
808
  const chat = this.chat(id);
498
809
  if (this.approvalRequests.has(id) ||
810
+ this.resendRequests.has(id) ||
499
811
  chat.status === 'submitted' ||
500
812
  chat.status === 'streaming')
501
813
  throw new Error('This conversation is busy.');
@@ -536,6 +848,9 @@ export class ChatController {
536
848
  return;
537
849
  const active = this.lifetime(), ordered = this.detailRequest(id);
538
850
  const detail = await this.api.conversation(id);
851
+ if (!active() || !ordered())
852
+ return;
853
+ await this.reconcile(id, detail);
539
854
  if (!active() || !ordered())
540
855
  return;
541
856
  await this.loadHistory(id, false, true);
@@ -691,6 +1006,12 @@ export class ChatController {
691
1006
  void chat.stop();
692
1007
  for (const admission of this.admissions.values())
693
1008
  admission.gate.reject(new CancelledError({ silent: true }));
1009
+ for (const request of this.resendRequests.values())
1010
+ request.gate.reject(new CancelledError({ silent: true }));
1011
+ this.resendRequests.clear();
1012
+ this.historyEpochs.clear();
1013
+ this.replacements.clear();
1014
+ this.reconciles.clear();
694
1015
  for (const watch of this.watches.values())
695
1016
  clearInterval(watch.timer);
696
1017
  this.watches.clear();