@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,767 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /* eslint-disable react-refresh/only-export-components -- shared controller provider and hooks */
3
+ import { CancelledError } from '@tanstack/react-query';
4
+ import { isToolUIPart } from 'ai';
5
+ import { Chat, useChat as useSDKChat } from '@ai-sdk/react';
6
+ import { createContext, useContext, useEffect, useLayoutEffect, useMemo, useRef, useSyncExternalStore, } from 'react';
7
+ import { useApiClient } from '@nocobase/app-client';
8
+ import { ChatApi } from './api.js';
9
+ import { chatIsRunning } from './feedback.js';
10
+ import { ChatSubmissions } from './submissions.js';
11
+ import { agentsQueryClient } from '../query.js';
12
+ import { chatKeys } from './keys.js';
13
+ import { EMPTY_MESSAGES, messagesReducer, mergeUIMessages, } from './message-model.js';
14
+ function deferred() {
15
+ let resolve, reject;
16
+ const promise = new Promise((yes, no) => {
17
+ resolve = yes;
18
+ reject = no;
19
+ });
20
+ return { promise, resolve, reject };
21
+ }
22
+ /** Application coordination around one SDK Chat per conversation, shared by every surface. */
23
+ export class ChatController {
24
+ api;
25
+ submissions;
26
+ chats = new Map();
27
+ histories = new Map();
28
+ loads = new Map();
29
+ refreshAgain = new Set();
30
+ resumed = new Set();
31
+ resuming = new Map();
32
+ recoveryErrors = new Map();
33
+ admissions = new Map();
34
+ watches = new Map();
35
+ messageVersions = new Map();
36
+ revisionQueue = new Map();
37
+ deferredReads = new Map();
38
+ completionReads = new Set();
39
+ stopRequests = new Set();
40
+ approvalRequests = new Set();
41
+ listeners = new Set();
42
+ revision = 0;
43
+ disposed = false;
44
+ generation = 0;
45
+ detailVersions = new Map();
46
+ commandVersions = new Map();
47
+ constructor(api) {
48
+ this.api = api;
49
+ this.submissions = new ChatSubmissions({
50
+ createConversation: (input) => api.createConversation(input),
51
+ messages: (id, query) => api.messages(id, query),
52
+ sendMessage: (id, input) => this.command(id, () => this.sendInput(id, input), (result) => result.conversation),
53
+ }, (detail, _record, created) => {
54
+ if (created)
55
+ this.remember(detail);
56
+ }, undefined, (id, message) => this.dispatch(id, { type: 'confirmed', message }));
57
+ this.submissions.subscribe(() => this.publish());
58
+ }
59
+ chat(id) {
60
+ let chat = this.chats.get(id);
61
+ if (!chat) {
62
+ chat = new Chat({
63
+ id,
64
+ transport: this.api.transport(id, (clientId) => {
65
+ const admission = this.admissions.get(id);
66
+ if (!this.disposed && admission?.clientId === clientId)
67
+ admission.gate.resolve();
68
+ }),
69
+ onFinish: () => {
70
+ if (!this.disposed && this.chats.get(id) === chat)
71
+ this.scheduleRefresh(id);
72
+ },
73
+ onError: () => {
74
+ if (this.disposed || this.chats.get(id) !== chat)
75
+ return;
76
+ this.scheduleRefresh(id);
77
+ },
78
+ });
79
+ this.chats.set(id, chat);
80
+ }
81
+ return chat;
82
+ }
83
+ renewChat(id, messages) {
84
+ const previous = this.chats.get(id);
85
+ this.chats.delete(id);
86
+ const chat = this.chat(id);
87
+ chat.messages = messages;
88
+ void previous?.stop();
89
+ this.publish();
90
+ return chat;
91
+ }
92
+ history(id) {
93
+ const current = this.histories.get(id);
94
+ return {
95
+ state: {
96
+ ...(current?.page ?? EMPTY_MESSAGES),
97
+ items: this.chat(id).messages,
98
+ pending: [],
99
+ },
100
+ error: current?.error,
101
+ loadingOlder: current?.loadingOlder ?? false,
102
+ loadedThrough: current?.loadedThrough ?? 0,
103
+ };
104
+ }
105
+ historyMeta(id) {
106
+ const previous = this.histories.get(id);
107
+ if (previous)
108
+ return previous;
109
+ const { items: _items, pending: _pending, ...page } = EMPTY_MESSAGES;
110
+ const created = { page, loadingOlder: false, loadedThrough: 0 };
111
+ this.histories.set(id, created);
112
+ return created;
113
+ }
114
+ dispatch(id, action) {
115
+ if (this.disposed)
116
+ return;
117
+ if (action.type === 'discard') {
118
+ const record = this.submissions
119
+ .snapshot()
120
+ .find((item) => item.clientId === action.clientId);
121
+ if (record && ['notSubmitted', 'rejected'].includes(record.status)) {
122
+ const chat = this.chat(id);
123
+ chat.messages = chat.messages.filter((message) => message.id !== action.clientId ||
124
+ message.metadata?.seq !== undefined);
125
+ chat.clearError();
126
+ }
127
+ this.submissions.editRejected(action.clientId);
128
+ return;
129
+ }
130
+ const current = this.historyMeta(id);
131
+ const before = this.history(id).state;
132
+ const next = messagesReducer(before, action);
133
+ const chat = this.chat(id);
134
+ const streaming = chat.status === 'submitted' || chat.status === 'streaming';
135
+ const activeId = streaming && chat.messages.at(-1)?.role === 'assistant'
136
+ ? chat.messages.at(-1).id
137
+ : undefined;
138
+ if (action.type === 'page' || action.type === 'confirmed') {
139
+ const incoming = action.type === 'page' ? action.page.items : [action.message];
140
+ const lastUser = Math.max(0, ...[...chat.messages, ...incoming]
141
+ .filter((message) => message.role === 'user')
142
+ .map((message) => message.metadata?.seq ?? 0));
143
+ const batch = incoming.filter((message) => {
144
+ const allowed = !streaming ||
145
+ Boolean(activeId) ||
146
+ message.role !== 'assistant' ||
147
+ (message.metadata?.seq ?? Infinity) <= lastUser;
148
+ if (!allowed) {
149
+ const pending = this.deferredReads.get(id) ?? new Set();
150
+ pending.add(message.id);
151
+ this.deferredReads.set(id, pending);
152
+ }
153
+ return allowed;
154
+ });
155
+ chat.messages = mergeUIMessages(chat.messages, batch, activeId);
156
+ }
157
+ const { items: _items, pending: _pending, ...page } = next;
158
+ this.histories.set(id, {
159
+ ...current,
160
+ page,
161
+ loadedThrough: action.type === 'page' && !action.older && !action.reread
162
+ ? Math.max(current.loadedThrough, action.page.nextAfter ?? action.page.lastSeq)
163
+ : current.loadedThrough,
164
+ });
165
+ this.publish();
166
+ }
167
+ async loadHistory(id, older = false, fresh = false) {
168
+ if (this.disposed)
169
+ return;
170
+ const pending = this.loads.get(id);
171
+ if (pending) {
172
+ if (fresh)
173
+ this.refreshAgain.add(id);
174
+ return pending;
175
+ }
176
+ const active = this.lifetime();
177
+ const initial = this.history(id);
178
+ if (older && !initial.state.olderToken)
179
+ return;
180
+ this.historyMeta(id).loadingOlder = older;
181
+ this.publish();
182
+ const task = (async () => {
183
+ try {
184
+ let after = initial.state.loaded ? initial.loadedThrough : undefined;
185
+ const seen = new Set();
186
+ while (active()) {
187
+ const page = await this.api.messages(id, older
188
+ ? { pageToken: this.history(id).state.olderToken }
189
+ : after === undefined
190
+ ? {}
191
+ : { after });
192
+ if (!active())
193
+ return;
194
+ this.dispatch(id, { type: 'page', page, older });
195
+ this.submissions.observe(id, page.items);
196
+ const metadata = this.historyMeta(id);
197
+ if (!older)
198
+ metadata.loadedThrough = page.nextAfter ?? page.lastSeq;
199
+ if (!older && page.nextAfter !== undefined) {
200
+ if (seen.has(page.nextAfter))
201
+ throw new Error('History pagination did not advance.');
202
+ seen.add(page.nextAfter);
203
+ after = page.nextAfter;
204
+ continue;
205
+ }
206
+ if (this.refreshAgain.delete(id)) {
207
+ older = false;
208
+ after = this.history(id).loadedThrough;
209
+ continue;
210
+ }
211
+ break;
212
+ }
213
+ if (active()) {
214
+ const pending = [...(this.deferredReads.get(id) ?? [])];
215
+ const owner = this.chat(id);
216
+ if (pending.length &&
217
+ owner.status !== 'submitted' &&
218
+ owner.status !== 'streaming')
219
+ await this.reread(id, pending);
220
+ if (active())
221
+ this.historyMeta(id).error = undefined;
222
+ }
223
+ }
224
+ catch (error) {
225
+ if (active())
226
+ this.historyMeta(id).error = error;
227
+ }
228
+ finally {
229
+ if (active()) {
230
+ this.historyMeta(id).loadingOlder = false;
231
+ this.loads.delete(id);
232
+ this.publish();
233
+ }
234
+ }
235
+ })();
236
+ this.loads.set(id, task);
237
+ return task;
238
+ }
239
+ async reread(id, ids) {
240
+ if (this.disposed)
241
+ return [];
242
+ const found = [];
243
+ const active = this.lifetime();
244
+ for (let offset = 0; offset < ids.length; offset += 100) {
245
+ const page = await this.api.messages(id, {
246
+ ids: ids.slice(offset, offset + 100).join(','),
247
+ });
248
+ if (!active())
249
+ return [];
250
+ found.push(...page.items);
251
+ const pending = this.deferredReads.get(id);
252
+ for (const message of page.items) {
253
+ if ((message.metadata?.revision ?? 0) >=
254
+ (this.messageVersions.get(`${id}:${message.id}`) ?? 0))
255
+ pending?.delete(message.id);
256
+ }
257
+ if (pending?.size === 0)
258
+ this.deferredReads.delete(id);
259
+ this.dispatch(id, { type: 'page', page, reread: true });
260
+ this.submissions.observe(id, page.items);
261
+ }
262
+ return found;
263
+ }
264
+ watch(id) {
265
+ let watch = this.watches.get(id);
266
+ if (!watch) {
267
+ const active = this.lifetime();
268
+ const timer = setInterval(() => {
269
+ if (!active() || document.visibilityState === 'hidden')
270
+ return;
271
+ const detail = agentsQueryClient().getQueryData(chatKeys.conversation(id));
272
+ const current = this.watches.get(id);
273
+ const interval = detail?.execution?.status === 'running' ? 5000 : 30000;
274
+ if (Date.now() - current.last < interval)
275
+ return;
276
+ current.last = Date.now();
277
+ void this.loadHistory(id, false, true);
278
+ }, 5000);
279
+ watch = { refs: 0, timer, last: Date.now() };
280
+ this.watches.set(id, watch);
281
+ }
282
+ watch.refs++;
283
+ return () => {
284
+ const current = this.watches.get(id);
285
+ if (current && --current.refs === 0) {
286
+ clearInterval(current.timer);
287
+ this.watches.delete(id);
288
+ }
289
+ };
290
+ }
291
+ reconnect() {
292
+ for (const id of this.watches.keys())
293
+ void this.resume(id);
294
+ }
295
+ messageUpdated(id, messageId, revision) {
296
+ const key = `${id}:${messageId}`;
297
+ if (((this.messageVersions.get(key) ?? -1) >= revision &&
298
+ !this.deferredReads.get(id)?.has(messageId)) ||
299
+ this.disposed)
300
+ return;
301
+ this.messageVersions.set(key, Math.max(this.messageVersions.get(key) ?? -1, revision));
302
+ const previous = this.revisionQueue.get(id);
303
+ if (previous) {
304
+ previous.pending.add(messageId);
305
+ return;
306
+ }
307
+ const queue = { pending: new Set([messageId]), task: Promise.resolve() };
308
+ this.revisionQueue.set(id, queue);
309
+ const active = this.lifetime();
310
+ queue.task = (async () => {
311
+ const attempted = new Set();
312
+ try {
313
+ while (active() && queue.pending.size) {
314
+ const ids = [...queue.pending];
315
+ queue.pending.clear();
316
+ ids.forEach((id) => attempted.add(id));
317
+ await this.reread(id, ids);
318
+ }
319
+ }
320
+ catch (error) {
321
+ if (active()) {
322
+ const retry = this.deferredReads.get(id) ?? new Set();
323
+ for (const messageId of [...attempted, ...queue.pending]) {
324
+ retry.add(messageId);
325
+ }
326
+ this.deferredReads.set(id, retry);
327
+ this.historyMeta(id).error = error;
328
+ this.publish();
329
+ }
330
+ }
331
+ finally {
332
+ if (active())
333
+ this.revisionQueue.delete(id);
334
+ }
335
+ })();
336
+ }
337
+ async sendInput(id, input) {
338
+ if (this.disposed)
339
+ throw new CancelledError({ silent: true });
340
+ const chat = this.chat(id);
341
+ if (chat.status === 'submitted' || chat.status === 'streaming')
342
+ throw new Error('This conversation is already receiving a response.');
343
+ const admitted = deferred();
344
+ this.admissions.set(id, { clientId: input.clientId, gate: admitted });
345
+ this.recoveryErrors.delete(id);
346
+ const active = this.lifetime();
347
+ const sending = chat.sendMessage({
348
+ id: input.clientId,
349
+ role: 'user',
350
+ metadata: {
351
+ conversationId: id,
352
+ createdAt: new Date().toISOString(),
353
+ revision: 0,
354
+ ...(input.context
355
+ ? {
356
+ context: {
357
+ route: input.context.route,
358
+ items: [],
359
+ dropped: 0,
360
+ ...(input.context.ui
361
+ ? { ui: structuredClone(input.context.ui) }
362
+ : {}),
363
+ },
364
+ }
365
+ : {}),
366
+ },
367
+ parts: [{ type: 'text', text: input.content }],
368
+ }, {
369
+ body: {
370
+ ...(input.context ? { context: input.context } : {}),
371
+ ...(input.attachmentIds?.length
372
+ ? { attachmentIds: input.attachmentIds }
373
+ : {}),
374
+ },
375
+ });
376
+ void sending.then(() => admitted.reject(chat.error ??
377
+ new Error('The response ended before input admission was confirmed.')), (error) => admitted.reject(error));
378
+ try {
379
+ await admitted.promise;
380
+ }
381
+ finally {
382
+ if (this.admissions.get(id)?.gate === admitted)
383
+ this.admissions.delete(id);
384
+ }
385
+ if (!active())
386
+ throw new CancelledError({ silent: true });
387
+ await this.loadHistory(id, false, true);
388
+ const conversation = await this.api.conversation(id);
389
+ if (!active())
390
+ throw new CancelledError({ silent: true });
391
+ const message = this.chat(id).messages.find((message) => message.role === 'user' &&
392
+ message.metadata?.seq !== undefined &&
393
+ (message.metadata?.clientId ?? message.id) === input.clientId);
394
+ if (!message)
395
+ throw new Error('Input was accepted; reconcile its saved message before sending again.');
396
+ return { message, conversation };
397
+ }
398
+ state(id) {
399
+ const chat = this.chats.get(id);
400
+ return chat
401
+ ? {
402
+ status: chat.status,
403
+ error: chat.error ?? this.recoveryErrors.get(id),
404
+ }
405
+ : undefined;
406
+ }
407
+ receive(id, known) {
408
+ if (this.disposed || this.resumed.has(id))
409
+ return;
410
+ const detail = known ??
411
+ agentsQueryClient().getQueryData(chatKeys.conversation(id));
412
+ if (!detail?.execution)
413
+ return;
414
+ this.resumed.add(id);
415
+ if (detail?.execution?.status === 'idle' ||
416
+ detail?.execution?.waitingApproval)
417
+ return;
418
+ void this.resume(id);
419
+ }
420
+ async resume(id) {
421
+ if (this.disposed)
422
+ return;
423
+ const pending = this.resuming.get(id);
424
+ if (pending)
425
+ return pending;
426
+ let chat = this.chat(id);
427
+ if (chat.status === 'submitted' || chat.status === 'streaming')
428
+ return;
429
+ const active = this.lifetime();
430
+ const canResume = () => active() &&
431
+ this.chats.get(id) === chat &&
432
+ chat.status !== 'submitted' &&
433
+ chat.status !== 'streaming';
434
+ const task = (async () => {
435
+ let interrupted;
436
+ try {
437
+ await this.loadHistory(id);
438
+ // A new input can begin while the recovery snapshot is still being read.
439
+ if (!canResume())
440
+ return;
441
+ if (chat.error) {
442
+ const previous = chat;
443
+ interrupted = [...previous.messages]
444
+ .reverse()
445
+ .find((message) => message.role === 'assistant');
446
+ // Shared recovery replays this response's full prefix. SDK disconnect state expects deltas instead.
447
+ // Recreate its one shared owner using public state, never the SDK's private resumable cache.
448
+ if (interrupted?.parts.some((part) => isToolUIPart(part) &&
449
+ (part.state === 'input-streaming' ||
450
+ part.state === 'approval-responded'))) {
451
+ const saved = await this.reread(id, [interrupted.id]);
452
+ if (!canResume())
453
+ return;
454
+ if (!saved.some((message) => message.id === interrupted.id))
455
+ previous.messages = previous.messages.filter((message) => message.id !== interrupted.id);
456
+ }
457
+ chat = this.renewChat(id, previous.messages);
458
+ if (!active())
459
+ return;
460
+ }
461
+ this.recoveryErrors.delete(id);
462
+ chat.clearError();
463
+ const response = [...chat.messages]
464
+ .reverse()
465
+ .find((message) => message.role === 'assistant');
466
+ if (response)
467
+ chat.messages = mergeUIMessages(chat.messages, [], response.id);
468
+ await chat.resumeStream();
469
+ if (active())
470
+ await this.refresh(id);
471
+ }
472
+ catch (error) {
473
+ if (canResume())
474
+ this.recoveryErrors.set(id, error instanceof Error
475
+ ? error
476
+ : new Error('Stream recovery failed.'));
477
+ }
478
+ finally {
479
+ if (active()) {
480
+ const display = interrupted;
481
+ if (display &&
482
+ canResume() &&
483
+ !chat.messages.some((message) => message.id === display.id))
484
+ chat.messages = mergeUIMessages(chat.messages, [display]);
485
+ this.resuming.delete(id);
486
+ this.publish();
487
+ }
488
+ }
489
+ })();
490
+ this.resuming.set(id, task);
491
+ return task;
492
+ }
493
+ async approve(id, input) {
494
+ const active = this.lifetime();
495
+ if (!active())
496
+ throw new CancelledError({ silent: true });
497
+ const chat = this.chat(id);
498
+ if (this.approvalRequests.has(id) ||
499
+ chat.status === 'submitted' ||
500
+ chat.status === 'streaming')
501
+ throw new Error('This conversation is busy.');
502
+ this.approvalRequests.add(id);
503
+ this.commandVersions.set(id, (this.commandVersions.get(id) ?? 0) + 1);
504
+ this.nextDetailVersion(id);
505
+ try {
506
+ await agentsQueryClient().cancelQueries({
507
+ queryKey: chatKeys.conversation(id),
508
+ exact: true,
509
+ });
510
+ if (!active())
511
+ throw new CancelledError({ silent: true });
512
+ chat.messages = mergeUIMessages(chat.messages, [], input.messageId);
513
+ await chat.addToolApprovalResponse(input.approval);
514
+ if (!active())
515
+ throw new CancelledError({ silent: true });
516
+ await chat.sendMessage(undefined, { body: { approvalInput: input } });
517
+ if (!active())
518
+ return;
519
+ if (chat.error)
520
+ throw chat.error;
521
+ await this.refresh(id);
522
+ }
523
+ finally {
524
+ if (active())
525
+ this.approvalRequests.delete(id);
526
+ }
527
+ }
528
+ async finalize(id) {
529
+ const active = this.lifetime();
530
+ await this.command(id, () => this.api.finalize(id), (detail) => detail);
531
+ if (active())
532
+ await this.refresh(id);
533
+ }
534
+ async refresh(id) {
535
+ if (this.disposed)
536
+ return;
537
+ const active = this.lifetime(), ordered = this.detailRequest(id);
538
+ const detail = await this.api.conversation(id);
539
+ if (!active() || !ordered())
540
+ return;
541
+ await this.loadHistory(id, false, true);
542
+ if (!active() || !ordered())
543
+ return;
544
+ const history = this.history(id);
545
+ if (history.error)
546
+ throw history.error instanceof Error
547
+ ? history.error
548
+ : new Error('Saved history could not be read.');
549
+ // Same-sequence approval revisions cannot be discovered by the insertion cursor.
550
+ const latest = [...this.chat(id).messages]
551
+ .reverse()
552
+ .find((message) => message.role === 'assistant');
553
+ const revisable = [
554
+ ...new Set([
555
+ ...(this.deferredReads.get(id) ?? []),
556
+ ...(detail.execution?.messageId
557
+ ? [detail.execution.messageId]
558
+ : latest
559
+ ? [latest.id]
560
+ : []),
561
+ ]),
562
+ ];
563
+ const saved = revisable.length ? await this.reread(id, revisable) : [];
564
+ if (!active() || !ordered())
565
+ return;
566
+ const owner = this.chat(id), receiving = owner.messages.at(-1);
567
+ if (owner.status === 'streaming' &&
568
+ receiving?.role === 'assistant' &&
569
+ (detail.execution?.status === 'idle' ||
570
+ detail.execution?.waitingApproval) &&
571
+ saved.some((message) => message.id === receiving.id &&
572
+ message.metadata?.seq !== undefined &&
573
+ message.metadata?.executionId === receiving.metadata?.executionId &&
574
+ message.metadata.revision >= (detail.execution?.revision ?? 0))) {
575
+ // Durable completion can release a lost subscriber; this never calls business Stop.
576
+ await owner.stop();
577
+ if (!active() || !ordered())
578
+ return;
579
+ owner.messages = mergeUIMessages(owner.messages, saved);
580
+ }
581
+ if (!active() || !ordered())
582
+ return;
583
+ this.remember(detail);
584
+ const chat = this.chat(id);
585
+ if (detail.execution?.status === 'idle') {
586
+ this.recoveryErrors.delete(id);
587
+ if (chat.error &&
588
+ saved.some((message) => message.id === chat.messages.at(-1)?.id &&
589
+ message.metadata?.seq !== undefined))
590
+ this.renewChat(id, chat.messages);
591
+ }
592
+ else if (detail.execution?.status === 'running' &&
593
+ !detail.execution.waitingApproval &&
594
+ chat.status !== 'submitted' &&
595
+ chat.status !== 'streaming')
596
+ this.recoveryErrors.set(id, new Error('Execution remains active; reconcile saved history or resume its stream.'));
597
+ this.publish();
598
+ }
599
+ scheduleRefresh(id) {
600
+ if (this.completionReads.has(id))
601
+ return;
602
+ this.completionReads.add(id);
603
+ queueMicrotask(() => {
604
+ this.completionReads.delete(id);
605
+ if (!this.disposed)
606
+ void this.refresh(id).catch(() => { });
607
+ });
608
+ }
609
+ observeDetail(detail) {
610
+ if (detail.execution?.status === 'running')
611
+ this.receive(detail.id, detail);
612
+ if (!chatIsRunning(detail)) {
613
+ if (this.chats.get(detail.id)?.status === 'streaming')
614
+ this.scheduleRefresh(detail.id);
615
+ this.stopRequests.delete(detail.id);
616
+ this.recoveryErrors.delete(detail.id);
617
+ this.publish();
618
+ }
619
+ }
620
+ isStopping(id) {
621
+ return this.stopRequests.has(id);
622
+ }
623
+ async stop(id) {
624
+ const active = this.lifetime();
625
+ this.stopRequests.add(id);
626
+ this.publish();
627
+ try {
628
+ return await this.command(id, () => this.api.stop(id), (detail) => detail);
629
+ }
630
+ catch (error) {
631
+ if (active()) {
632
+ this.stopRequests.delete(id);
633
+ this.publish();
634
+ }
635
+ throw error;
636
+ }
637
+ }
638
+ lifetime() {
639
+ const generation = this.generation;
640
+ return () => !this.disposed && this.generation === generation;
641
+ }
642
+ nextDetailVersion(id) {
643
+ const version = (this.detailVersions.get(id) ?? 0) + 1;
644
+ this.detailVersions.set(id, version);
645
+ return version;
646
+ }
647
+ detailRequest(id) {
648
+ const active = this.lifetime(), version = this.nextDetailVersion(id);
649
+ return () => active() && this.detailVersions.get(id) === version;
650
+ }
651
+ remember(detail) {
652
+ this.nextDetailVersion(detail.id);
653
+ this.observeDetail(detail);
654
+ agentsQueryClient().setQueryData(chatKeys.conversation(detail.id), detail);
655
+ void agentsQueryClient().invalidateQueries({ queryKey: chatKeys.lists });
656
+ }
657
+ async command(id, request, detail) {
658
+ const active = this.lifetime(), version = (this.commandVersions.get(id) ?? 0) + 1;
659
+ this.commandVersions.set(id, version);
660
+ this.nextDetailVersion(id);
661
+ await agentsQueryClient().cancelQueries({
662
+ queryKey: chatKeys.conversation(id),
663
+ exact: true,
664
+ });
665
+ if (!active())
666
+ throw new CancelledError({ silent: true });
667
+ const result = await request();
668
+ if (active() && this.commandVersions.get(id) === version)
669
+ this.remember(detail(result));
670
+ return result;
671
+ }
672
+ subscribe = (callback) => {
673
+ this.listeners.add(callback);
674
+ return () => this.listeners.delete(callback);
675
+ };
676
+ snapshot = () => this.revision;
677
+ publish() {
678
+ this.revision++;
679
+ for (const callback of this.listeners)
680
+ callback();
681
+ }
682
+ activate() {
683
+ this.disposed = false;
684
+ }
685
+ invalidate() {
686
+ if (this.disposed)
687
+ return;
688
+ this.disposed = true;
689
+ this.generation++;
690
+ for (const chat of this.chats.values())
691
+ void chat.stop();
692
+ for (const admission of this.admissions.values())
693
+ admission.gate.reject(new CancelledError({ silent: true }));
694
+ for (const watch of this.watches.values())
695
+ clearInterval(watch.timer);
696
+ this.watches.clear();
697
+ this.messageVersions.clear();
698
+ this.revisionQueue.clear();
699
+ this.deferredReads.clear();
700
+ this.completionReads.clear();
701
+ this.admissions.clear();
702
+ this.loads.clear();
703
+ this.refreshAgain.clear();
704
+ this.commandVersions.clear();
705
+ this.stopRequests.clear();
706
+ this.approvalRequests.clear();
707
+ this.resuming.clear();
708
+ this.resumed.clear();
709
+ this.submissions.invalidate();
710
+ agentsQueryClient().removeQueries({ queryKey: chatKeys.all });
711
+ }
712
+ dispose() {
713
+ this.invalidate();
714
+ this.submissions.dispose();
715
+ this.chats.clear();
716
+ this.histories.clear();
717
+ this.listeners.clear();
718
+ }
719
+ }
720
+ const ControllerContext = createContext(null);
721
+ export function ChatClientProvider({ children, }) {
722
+ const host = useApiClient();
723
+ const controller = useMemo(() => new ChatController(new ChatApi(host)), [host]);
724
+ const lifetimesRef = useRef(new Map());
725
+ useLayoutEffect(() => {
726
+ controller.activate();
727
+ const lifetimes = lifetimesRef.current;
728
+ lifetimes.set(controller, (lifetimes.get(controller) ?? 0) + 1);
729
+ const reconnect = () => controller.reconnect();
730
+ window.addEventListener('online', reconnect);
731
+ return () => {
732
+ window.removeEventListener('online', reconnect);
733
+ controller.invalidate();
734
+ lifetimes.set(controller, (lifetimes.get(controller) ?? 1) - 1);
735
+ queueMicrotask(() => {
736
+ if (lifetimes.get(controller) === 0) {
737
+ controller.dispose();
738
+ lifetimes.delete(controller);
739
+ }
740
+ });
741
+ };
742
+ }, [controller]);
743
+ return (_jsx(ControllerContext.Provider, { value: controller, children: children }));
744
+ }
745
+ export function useChatController() {
746
+ const controller = useContext(ControllerContext);
747
+ if (!controller)
748
+ throw new Error('ChatProvider is required.');
749
+ return controller;
750
+ }
751
+ export function useChatStream(id) {
752
+ const controller = useChatController();
753
+ useSDKChat({ chat: controller.chat(id ?? 'draft') });
754
+ useSyncExternalStore(controller.subscribe, controller.snapshot, controller.snapshot);
755
+ useEffect(() => {
756
+ if (id)
757
+ controller.receive(id);
758
+ }, [controller, id]);
759
+ return id ? controller.state(id) : undefined;
760
+ }
761
+ export function useChatStreamState(id) {
762
+ const controller = useChatController();
763
+ useSDKChat({ chat: controller.chat(id ?? 'draft') });
764
+ useSyncExternalStore(controller.subscribe, controller.snapshot, controller.snapshot);
765
+ return id ? controller.state(id) : undefined;
766
+ }
767
+ //# sourceMappingURL=controller.js.map