@adonis-agora/agent 0.61.0 → 0.62.0

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 (610) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +12 -7
  3. package/dist/configure.d.ts +7 -5
  4. package/dist/configure.d.ts.map +1 -1
  5. package/dist/configure.js +7 -5
  6. package/dist/configure.js.map +1 -1
  7. package/dist/providers/a2a_provider.d.ts +14 -0
  8. package/dist/providers/a2a_provider.d.ts.map +1 -0
  9. package/dist/providers/a2a_provider.js +136 -0
  10. package/dist/providers/a2a_provider.js.map +1 -0
  11. package/dist/providers/agent_provider.d.ts.map +1 -1
  12. package/dist/providers/agent_provider.js +80 -13
  13. package/dist/providers/agent_provider.js.map +1 -1
  14. package/dist/providers/mcp_provider.d.ts +3 -0
  15. package/dist/providers/mcp_provider.d.ts.map +1 -1
  16. package/dist/providers/mcp_provider.js +147 -62
  17. package/dist/providers/mcp_provider.js.map +1 -1
  18. package/dist/src/a2a/auth.d.ts +67 -0
  19. package/dist/src/a2a/auth.d.ts.map +1 -0
  20. package/dist/src/a2a/auth.js +47 -0
  21. package/dist/src/a2a/auth.js.map +1 -0
  22. package/dist/src/a2a/define_config.d.ts +74 -0
  23. package/dist/src/a2a/define_config.d.ts.map +1 -0
  24. package/dist/src/a2a/define_config.js +5 -0
  25. package/dist/src/a2a/define_config.js.map +1 -0
  26. package/dist/src/a2a/gate.d.ts +23 -0
  27. package/dist/src/a2a/gate.d.ts.map +1 -0
  28. package/dist/src/a2a/gate.js +56 -0
  29. package/dist/src/a2a/gate.js.map +1 -0
  30. package/dist/src/a2a/handler.d.ts +65 -0
  31. package/dist/src/a2a/handler.d.ts.map +1 -0
  32. package/dist/src/a2a/handler.js +322 -0
  33. package/dist/src/a2a/handler.js.map +1 -0
  34. package/dist/src/a2a/index.d.ts +15 -0
  35. package/dist/src/a2a/index.d.ts.map +1 -0
  36. package/dist/src/a2a/index.js +9 -0
  37. package/dist/src/a2a/index.js.map +1 -0
  38. package/dist/src/a2a/permission-tool.d.ts +17 -0
  39. package/dist/src/a2a/permission-tool.d.ts.map +1 -0
  40. package/dist/src/a2a/permission-tool.js +70 -0
  41. package/dist/src/a2a/permission-tool.js.map +1 -0
  42. package/dist/src/a2a/protocol.d.ts +100 -0
  43. package/dist/src/a2a/protocol.d.ts.map +1 -0
  44. package/dist/src/a2a/protocol.js +106 -0
  45. package/dist/src/a2a/protocol.js.map +1 -0
  46. package/dist/src/a2a/runtime.d.ts +6 -0
  47. package/dist/src/a2a/runtime.d.ts.map +1 -0
  48. package/dist/src/a2a/runtime.js +13 -0
  49. package/dist/src/a2a/runtime.js.map +1 -0
  50. package/dist/src/a2a/server_middleware.d.ts +13 -0
  51. package/dist/src/a2a/server_middleware.d.ts.map +1 -0
  52. package/dist/src/a2a/server_middleware.js +18 -0
  53. package/dist/src/a2a/server_middleware.js.map +1 -0
  54. package/dist/src/a2a/store.d.ts +79 -0
  55. package/dist/src/a2a/store.d.ts.map +1 -0
  56. package/dist/src/a2a/store.js +151 -0
  57. package/dist/src/a2a/store.js.map +1 -0
  58. package/dist/src/a2a/turn.d.ts +80 -0
  59. package/dist/src/a2a/turn.d.ts.map +1 -0
  60. package/dist/src/a2a/turn.js +211 -0
  61. package/dist/src/a2a/turn.js.map +1 -0
  62. package/dist/src/action-proposal-executor.d.ts +3 -0
  63. package/dist/src/action-proposal-executor.d.ts.map +1 -1
  64. package/dist/src/action-proposal-executor.js +10 -0
  65. package/dist/src/action-proposal-executor.js.map +1 -1
  66. package/dist/src/action-proposal-service.d.ts +6 -2
  67. package/dist/src/action-proposal-service.d.ts.map +1 -1
  68. package/dist/src/action-proposal-service.js +20 -16
  69. package/dist/src/action-proposal-service.js.map +1 -1
  70. package/dist/src/action-proposal-text.d.ts +42 -3
  71. package/dist/src/action-proposal-text.d.ts.map +1 -1
  72. package/dist/src/action-proposal-text.js +80 -12
  73. package/dist/src/action-proposal-text.js.map +1 -1
  74. package/dist/src/action-proposal-worker.d.ts +2 -1
  75. package/dist/src/action-proposal-worker.d.ts.map +1 -1
  76. package/dist/src/action-proposal-worker.js +9 -2
  77. package/dist/src/action-proposal-worker.js.map +1 -1
  78. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  79. package/dist/src/ag-ui/adapter.js +83 -11
  80. package/dist/src/ag-ui/adapter.js.map +1 -1
  81. package/dist/src/ag-ui/core/encoder.d.ts +105 -0
  82. package/dist/src/ag-ui/core/encoder.d.ts.map +1 -0
  83. package/dist/src/ag-ui/core/encoder.js +523 -0
  84. package/dist/src/ag-ui/core/encoder.js.map +1 -0
  85. package/dist/src/ag-ui/core/index.d.ts +12 -0
  86. package/dist/src/ag-ui/core/index.d.ts.map +1 -0
  87. package/dist/src/ag-ui/core/index.js +12 -0
  88. package/dist/src/ag-ui/core/index.js.map +1 -0
  89. package/dist/src/ag-ui/core/input.d.ts +74 -0
  90. package/dist/src/ag-ui/core/input.d.ts.map +1 -0
  91. package/dist/src/ag-ui/core/input.js +228 -0
  92. package/dist/src/ag-ui/core/input.js.map +1 -0
  93. package/dist/src/ag-ui/core/interrupt-id.d.ts +31 -0
  94. package/dist/src/ag-ui/core/interrupt-id.d.ts.map +1 -0
  95. package/dist/src/ag-ui/core/interrupt-id.js +48 -0
  96. package/dist/src/ag-ui/core/interrupt-id.js.map +1 -0
  97. package/dist/src/ag-ui/{proposal-decision.d.ts → core/proposal-decision.d.ts} +1 -1
  98. package/dist/src/ag-ui/core/proposal-decision.d.ts.map +1 -0
  99. package/dist/src/ag-ui/{proposal-decision.js → core/proposal-decision.js} +3 -6
  100. package/dist/src/ag-ui/core/proposal-decision.js.map +1 -0
  101. package/dist/src/ag-ui/core/stream.d.ts +27 -0
  102. package/dist/src/ag-ui/core/stream.d.ts.map +1 -0
  103. package/dist/src/ag-ui/core/stream.js +68 -0
  104. package/dist/src/ag-ui/core/stream.js.map +1 -0
  105. package/dist/src/ag-ui/core/types.d.ts +249 -0
  106. package/dist/src/ag-ui/core/types.d.ts.map +1 -0
  107. package/dist/src/ag-ui/core/types.js +35 -0
  108. package/dist/src/ag-ui/core/types.js.map +1 -0
  109. package/dist/src/ag-ui/encoder.d.ts +3 -4
  110. package/dist/src/ag-ui/encoder.d.ts.map +1 -1
  111. package/dist/src/ag-ui/encoder.js +10 -11
  112. package/dist/src/ag-ui/encoder.js.map +1 -1
  113. package/dist/src/ag-ui/frames.d.ts +4 -5
  114. package/dist/src/ag-ui/frames.d.ts.map +1 -1
  115. package/dist/src/ag-ui/frames.js +8 -4
  116. package/dist/src/ag-ui/frames.js.map +1 -1
  117. package/dist/src/ag-ui/index.d.ts +3 -5
  118. package/dist/src/ag-ui/index.d.ts.map +1 -1
  119. package/dist/src/ag-ui/index.js +3 -5
  120. package/dist/src/ag-ui/index.js.map +1 -1
  121. package/dist/src/ag-ui/stream.d.ts +3 -4
  122. package/dist/src/ag-ui/stream.d.ts.map +1 -1
  123. package/dist/src/ag-ui/stream.js +4 -5
  124. package/dist/src/ag-ui/stream.js.map +1 -1
  125. package/dist/src/agent-deps-factory.d.ts +3 -0
  126. package/dist/src/agent-deps-factory.d.ts.map +1 -1
  127. package/dist/src/agent-deps-factory.js +3 -0
  128. package/dist/src/agent-deps-factory.js.map +1 -1
  129. package/dist/src/agent-deps.d.ts +3 -0
  130. package/dist/src/agent-deps.d.ts.map +1 -1
  131. package/dist/src/agent-deps.js.map +1 -1
  132. package/dist/src/agent-loop.d.ts +4 -3
  133. package/dist/src/agent-loop.d.ts.map +1 -1
  134. package/dist/src/agent-loop.js +50 -25
  135. package/dist/src/agent-loop.js.map +1 -1
  136. package/dist/src/agent-service.d.ts +11 -2
  137. package/dist/src/agent-service.d.ts.map +1 -1
  138. package/dist/src/agent-service.js +23 -11
  139. package/dist/src/agent-service.js.map +1 -1
  140. package/dist/src/ai-sdk/ai-sdk-model.js +4 -1
  141. package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
  142. package/dist/src/ai-tool-ref.d.ts +4 -0
  143. package/dist/src/ai-tool-ref.d.ts.map +1 -1
  144. package/dist/src/ai-tool-ref.js +10 -14
  145. package/dist/src/ai-tool-ref.js.map +1 -1
  146. package/dist/src/chat-queue-service.d.ts.map +1 -1
  147. package/dist/src/chat-queue-service.js +2 -0
  148. package/dist/src/chat-queue-service.js.map +1 -1
  149. package/dist/src/define_config.d.ts +61 -12
  150. package/dist/src/define_config.d.ts.map +1 -1
  151. package/dist/src/define_config.js.map +1 -1
  152. package/dist/src/engine.d.ts +77 -0
  153. package/dist/src/engine.d.ts.map +1 -0
  154. package/dist/src/engine.js +27 -0
  155. package/dist/src/engine.js.map +1 -0
  156. package/dist/src/genui/builtins.d.ts +73 -3
  157. package/dist/src/genui/builtins.d.ts.map +1 -1
  158. package/dist/src/genui/builtins.js +298 -3
  159. package/dist/src/genui/builtins.js.map +1 -1
  160. package/dist/src/genui/capabilities.d.ts +24 -0
  161. package/dist/src/genui/capabilities.d.ts.map +1 -0
  162. package/dist/src/genui/capabilities.js +81 -0
  163. package/dist/src/genui/capabilities.js.map +1 -0
  164. package/dist/src/genui/catalog.d.ts +77 -0
  165. package/dist/src/genui/catalog.d.ts.map +1 -0
  166. package/dist/src/genui/catalog.js +88 -0
  167. package/dist/src/genui/catalog.js.map +1 -0
  168. package/dist/src/genui/factory.d.ts +7 -14
  169. package/dist/src/genui/factory.d.ts.map +1 -1
  170. package/dist/src/genui/factory.js.map +1 -1
  171. package/dist/src/genui/index.d.ts +4 -12
  172. package/dist/src/genui/index.d.ts.map +1 -1
  173. package/dist/src/genui/index.js +5 -18
  174. package/dist/src/genui/index.js.map +1 -1
  175. package/dist/src/genui/public.d.ts +9 -0
  176. package/dist/src/genui/public.d.ts.map +1 -0
  177. package/dist/src/genui/public.js +9 -0
  178. package/dist/src/genui/public.js.map +1 -0
  179. package/dist/src/genui/registry.d.ts +65 -0
  180. package/dist/src/genui/registry.d.ts.map +1 -0
  181. package/dist/src/genui/registry.js +151 -0
  182. package/dist/src/genui/registry.js.map +1 -0
  183. package/dist/src/genui/schema.d.ts +71 -0
  184. package/dist/src/genui/schema.d.ts.map +1 -0
  185. package/dist/src/genui/schema.js +304 -0
  186. package/dist/src/genui/schema.js.map +1 -0
  187. package/dist/src/genui/text.d.ts +35 -0
  188. package/dist/src/genui/text.d.ts.map +1 -0
  189. package/dist/src/genui/text.js +156 -0
  190. package/dist/src/genui/text.js.map +1 -0
  191. package/dist/src/genui/tools.d.ts +91 -0
  192. package/dist/src/genui/tools.d.ts.map +1 -0
  193. package/dist/src/genui/tools.js +292 -0
  194. package/dist/src/genui/tools.js.map +1 -0
  195. package/dist/src/genui/tree.d.ts +56 -0
  196. package/dist/src/genui/tree.d.ts.map +1 -0
  197. package/dist/src/genui/tree.js +188 -0
  198. package/dist/src/genui/tree.js.map +1 -0
  199. package/dist/src/index.d.ts +4 -2
  200. package/dist/src/index.d.ts.map +1 -1
  201. package/dist/src/index.js +2 -1
  202. package/dist/src/index.js.map +1 -1
  203. package/dist/src/mcp/auth.d.ts +17 -1
  204. package/dist/src/mcp/auth.d.ts.map +1 -1
  205. package/dist/src/mcp/auth.js +14 -3
  206. package/dist/src/mcp/auth.js.map +1 -1
  207. package/dist/src/mcp/define_config.d.ts +81 -2
  208. package/dist/src/mcp/define_config.d.ts.map +1 -1
  209. package/dist/src/mcp/define_config.js.map +1 -1
  210. package/dist/src/mcp/index.d.ts +1 -1
  211. package/dist/src/mcp/index.d.ts.map +1 -1
  212. package/dist/src/mcp/index.js.map +1 -1
  213. package/dist/src/mcp/oauth-resource.d.ts +9 -0
  214. package/dist/src/mcp/oauth-resource.d.ts.map +1 -0
  215. package/dist/src/mcp/oauth-resource.js +16 -0
  216. package/dist/src/mcp/oauth-resource.js.map +1 -0
  217. package/dist/src/mcp/server.d.ts +5 -0
  218. package/dist/src/mcp/server.d.ts.map +1 -1
  219. package/dist/src/mcp/server.js +48 -16
  220. package/dist/src/mcp/server.js.map +1 -1
  221. package/dist/src/negotiated-tool-ui.d.ts.map +1 -1
  222. package/dist/src/negotiated-tool-ui.js +12 -8
  223. package/dist/src/negotiated-tool-ui.js.map +1 -1
  224. package/dist/src/opencode/client.d.ts +202 -0
  225. package/dist/src/opencode/client.d.ts.map +1 -0
  226. package/dist/src/opencode/client.js +2 -0
  227. package/dist/src/opencode/client.js.map +1 -0
  228. package/dist/src/opencode/durable/index.d.ts +33 -0
  229. package/dist/src/opencode/durable/index.d.ts.map +1 -0
  230. package/dist/src/opencode/durable/index.js +38 -0
  231. package/dist/src/opencode/durable/index.js.map +1 -0
  232. package/dist/src/opencode/durable/runner.d.ts +36 -0
  233. package/dist/src/opencode/durable/runner.d.ts.map +1 -0
  234. package/dist/src/opencode/durable/runner.js +88 -0
  235. package/dist/src/opencode/durable/runner.js.map +1 -0
  236. package/dist/src/opencode/durable/workflow.d.ts +40 -0
  237. package/dist/src/opencode/durable/workflow.d.ts.map +1 -0
  238. package/dist/src/opencode/durable/workflow.js +106 -0
  239. package/dist/src/opencode/durable/workflow.js.map +1 -0
  240. package/dist/src/opencode/engine.d.ts +48 -0
  241. package/dist/src/opencode/engine.d.ts.map +1 -0
  242. package/dist/src/opencode/engine.js +98 -0
  243. package/dist/src/opencode/engine.js.map +1 -0
  244. package/dist/src/opencode/event-hub.d.ts +23 -0
  245. package/dist/src/opencode/event-hub.d.ts.map +1 -0
  246. package/dist/src/opencode/event-hub.js +99 -0
  247. package/dist/src/opencode/event-hub.js.map +1 -0
  248. package/dist/src/opencode/forms.d.ts +19 -0
  249. package/dist/src/opencode/forms.d.ts.map +1 -0
  250. package/dist/src/opencode/forms.js +82 -0
  251. package/dist/src/opencode/forms.js.map +1 -0
  252. package/dist/src/opencode/host.d.ts +179 -0
  253. package/dist/src/opencode/host.d.ts.map +1 -0
  254. package/dist/src/opencode/host.js +34 -0
  255. package/dist/src/opencode/host.js.map +1 -0
  256. package/dist/src/opencode/index.d.ts +15 -0
  257. package/dist/src/opencode/index.d.ts.map +1 -0
  258. package/dist/src/opencode/index.js +9 -0
  259. package/dist/src/opencode/index.js.map +1 -0
  260. package/dist/src/opencode/log.d.ts +9 -0
  261. package/dist/src/opencode/log.d.ts.map +1 -0
  262. package/dist/src/opencode/log.js +15 -0
  263. package/dist/src/opencode/log.js.map +1 -0
  264. package/dist/src/opencode/mcp.d.ts +60 -0
  265. package/dist/src/opencode/mcp.d.ts.map +1 -0
  266. package/dist/src/opencode/mcp.js +258 -0
  267. package/dist/src/opencode/mcp.js.map +1 -0
  268. package/dist/src/opencode/runner.d.ts +40 -0
  269. package/dist/src/opencode/runner.d.ts.map +1 -0
  270. package/dist/src/opencode/runner.js +125 -0
  271. package/dist/src/opencode/runner.js.map +1 -0
  272. package/dist/src/opencode/turn.d.ts +167 -0
  273. package/dist/src/opencode/turn.d.ts.map +1 -0
  274. package/dist/src/opencode/turn.js +761 -0
  275. package/dist/src/opencode/turn.js.map +1 -0
  276. package/dist/src/opencode/turns.d.ts +245 -0
  277. package/dist/src/opencode/turns.d.ts.map +1 -0
  278. package/dist/src/opencode/turns.js +867 -0
  279. package/dist/src/opencode/turns.js.map +1 -0
  280. package/dist/src/personas.d.ts.map +1 -1
  281. package/dist/src/personas.js +4 -1
  282. package/dist/src/personas.js.map +1 -1
  283. package/dist/src/react/ag-ui.d.ts +4 -2
  284. package/dist/src/react/ag-ui.d.ts.map +1 -1
  285. package/dist/src/react/ag-ui.js +2 -2
  286. package/dist/src/react/ag-ui.js.map +1 -1
  287. package/dist/src/react/client.d.ts +1 -1
  288. package/dist/src/react/client.d.ts.map +1 -1
  289. package/dist/src/react/client.js +1 -1
  290. package/dist/src/react/client.js.map +1 -1
  291. package/dist/src/react/core/ag-ui-backend.d.ts +85 -0
  292. package/dist/src/react/core/ag-ui-backend.d.ts.map +1 -0
  293. package/dist/src/react/core/ag-ui-backend.js +409 -0
  294. package/dist/src/react/core/ag-ui-backend.js.map +1 -0
  295. package/dist/src/react/core/agent-chat-transport.d.ts +187 -0
  296. package/dist/src/react/core/agent-chat-transport.d.ts.map +1 -0
  297. package/dist/src/react/core/agent-chat-transport.js +796 -0
  298. package/dist/src/react/core/agent-chat-transport.js.map +1 -0
  299. package/dist/src/react/core/approvals/countdown.d.ts +22 -0
  300. package/dist/src/react/core/approvals/countdown.d.ts.map +1 -0
  301. package/dist/src/react/core/approvals/countdown.js +39 -0
  302. package/dist/src/react/core/approvals/countdown.js.map +1 -0
  303. package/dist/src/react/core/approvals/proposals.d.ts +15 -0
  304. package/dist/src/react/core/approvals/proposals.d.ts.map +1 -0
  305. package/dist/src/react/core/approvals/proposals.js +82 -0
  306. package/dist/src/react/core/approvals/proposals.js.map +1 -0
  307. package/dist/src/react/core/approvals/use-action-proposals.d.ts +10 -0
  308. package/dist/src/react/core/approvals/use-action-proposals.d.ts.map +1 -0
  309. package/dist/src/react/core/approvals/use-action-proposals.js +86 -0
  310. package/dist/src/react/core/approvals/use-action-proposals.js.map +1 -0
  311. package/dist/src/react/core/attachments/files.d.ts +39 -0
  312. package/dist/src/react/core/attachments/files.d.ts.map +1 -0
  313. package/dist/src/react/core/attachments/files.js +89 -0
  314. package/dist/src/react/core/attachments/files.js.map +1 -0
  315. package/dist/src/react/core/attachments/use-attachments.d.ts +106 -0
  316. package/dist/src/react/core/attachments/use-attachments.d.ts.map +1 -0
  317. package/dist/src/react/core/attachments/use-attachments.js +217 -0
  318. package/dist/src/react/core/attachments/use-attachments.js.map +1 -0
  319. package/dist/src/react/core/backend.d.ts +234 -0
  320. package/dist/src/react/core/backend.d.ts.map +1 -0
  321. package/dist/src/react/core/backend.js +21 -0
  322. package/dist/src/react/core/backend.js.map +1 -0
  323. package/dist/src/react/core/background-runs.d.ts +32 -0
  324. package/dist/src/react/core/background-runs.d.ts.map +1 -0
  325. package/dist/src/react/core/background-runs.js +47 -0
  326. package/dist/src/react/core/background-runs.js.map +1 -0
  327. package/dist/src/react/core/catalog/use-agents.d.ts +31 -0
  328. package/dist/src/react/core/catalog/use-agents.d.ts.map +1 -0
  329. package/dist/src/react/core/catalog/use-agents.js +28 -0
  330. package/dist/src/react/core/catalog/use-agents.js.map +1 -0
  331. package/dist/src/react/core/catalog/use-models.d.ts +41 -0
  332. package/dist/src/react/core/catalog/use-models.d.ts.map +1 -0
  333. package/dist/src/react/core/catalog/use-models.js +35 -0
  334. package/dist/src/react/core/catalog/use-models.js.map +1 -0
  335. package/dist/src/react/core/catalog/use-resource.d.ts +12 -0
  336. package/dist/src/react/core/catalog/use-resource.d.ts.map +1 -0
  337. package/dist/src/react/core/catalog/use-resource.js +41 -0
  338. package/dist/src/react/core/catalog/use-resource.js.map +1 -0
  339. package/dist/src/react/core/client-wire.d.ts +14 -0
  340. package/dist/src/react/core/client-wire.d.ts.map +1 -0
  341. package/dist/src/react/core/client-wire.js +2 -0
  342. package/dist/src/react/core/client-wire.js.map +1 -0
  343. package/dist/src/react/core/client.d.ts +222 -0
  344. package/dist/src/react/core/client.d.ts.map +1 -0
  345. package/dist/src/react/core/client.js +435 -0
  346. package/dist/src/react/core/client.js.map +1 -0
  347. package/dist/src/react/core/components/ambient-ui.d.ts +22 -0
  348. package/dist/src/react/core/components/ambient-ui.d.ts.map +1 -0
  349. package/dist/src/react/core/components/ambient-ui.js +30 -0
  350. package/dist/src/react/core/components/ambient-ui.js.map +1 -0
  351. package/dist/src/react/core/components/chat-input.d.ts +44 -0
  352. package/dist/src/react/core/components/chat-input.d.ts.map +1 -0
  353. package/dist/src/react/core/components/chat-input.js +69 -0
  354. package/dist/src/react/core/components/chat-input.js.map +1 -0
  355. package/dist/src/react/core/components/index.d.ts +7 -0
  356. package/dist/src/react/core/components/index.d.ts.map +1 -0
  357. package/dist/src/react/core/components/index.js +7 -0
  358. package/dist/src/react/core/components/index.js.map +1 -0
  359. package/dist/src/react/core/components/message-item.d.ts +101 -0
  360. package/dist/src/react/core/components/message-item.d.ts.map +1 -0
  361. package/dist/src/react/core/components/message-item.js +118 -0
  362. package/dist/src/react/core/components/message-item.js.map +1 -0
  363. package/dist/src/react/core/components/message-list.d.ts +85 -0
  364. package/dist/src/react/core/components/message-list.d.ts.map +1 -0
  365. package/dist/src/react/core/components/message-list.js +45 -0
  366. package/dist/src/react/core/components/message-list.js.map +1 -0
  367. package/dist/src/react/core/components/speech-languages.d.ts +22 -0
  368. package/dist/src/react/core/components/speech-languages.d.ts.map +1 -0
  369. package/dist/src/react/core/components/speech-languages.js +38 -0
  370. package/dist/src/react/core/components/speech-languages.js.map +1 -0
  371. package/dist/src/react/core/components/use-speech-recognition.d.ts +19 -0
  372. package/dist/src/react/core/components/use-speech-recognition.d.ts.map +1 -0
  373. package/dist/src/react/core/components/use-speech-recognition.js +92 -0
  374. package/dist/src/react/core/components/use-speech-recognition.js.map +1 -0
  375. package/dist/src/react/core/composer/index.d.ts +4 -0
  376. package/dist/src/react/core/composer/index.d.ts.map +1 -0
  377. package/dist/src/react/core/composer/index.js +4 -0
  378. package/dist/src/react/core/composer/index.js.map +1 -0
  379. package/dist/src/react/core/composer/model.d.ts +83 -0
  380. package/dist/src/react/core/composer/model.d.ts.map +1 -0
  381. package/dist/src/react/core/composer/model.js +53 -0
  382. package/dist/src/react/core/composer/model.js.map +1 -0
  383. package/dist/src/react/core/composer/skills-source.d.ts +29 -0
  384. package/dist/src/react/core/composer/skills-source.d.ts.map +1 -0
  385. package/dist/src/react/core/composer/skills-source.js +61 -0
  386. package/dist/src/react/core/composer/skills-source.js.map +1 -0
  387. package/dist/src/react/core/composer/use-composer-autocomplete.d.ts +78 -0
  388. package/dist/src/react/core/composer/use-composer-autocomplete.d.ts.map +1 -0
  389. package/dist/src/react/core/composer/use-composer-autocomplete.js +244 -0
  390. package/dist/src/react/core/composer/use-composer-autocomplete.js.map +1 -0
  391. package/dist/src/react/core/config/use-agent-config.d.ts +21 -0
  392. package/dist/src/react/core/config/use-agent-config.d.ts.map +1 -0
  393. package/dist/src/react/core/config/use-agent-config.js +57 -0
  394. package/dist/src/react/core/config/use-agent-config.js.map +1 -0
  395. package/dist/src/react/core/elicitation/answers.d.ts +22 -0
  396. package/dist/src/react/core/elicitation/answers.d.ts.map +1 -0
  397. package/dist/src/react/core/elicitation/answers.js +65 -0
  398. package/dist/src/react/core/elicitation/answers.js.map +1 -0
  399. package/dist/src/react/core/feedback/use-message-feedback.d.ts +32 -0
  400. package/dist/src/react/core/feedback/use-message-feedback.d.ts.map +1 -0
  401. package/dist/src/react/core/feedback/use-message-feedback.js +106 -0
  402. package/dist/src/react/core/feedback/use-message-feedback.js.map +1 -0
  403. package/dist/src/react/core/genui/generative-ui.d.ts +76 -0
  404. package/dist/src/react/core/genui/generative-ui.d.ts.map +1 -0
  405. package/dist/src/react/core/genui/generative-ui.js +210 -0
  406. package/dist/src/react/core/genui/generative-ui.js.map +1 -0
  407. package/dist/src/react/core/genui/index.d.ts +5 -0
  408. package/dist/src/react/core/genui/index.d.ts.map +1 -0
  409. package/dist/src/react/core/genui/index.js +5 -0
  410. package/dist/src/react/core/genui/index.js.map +1 -0
  411. package/dist/src/react/core/genui/json-render.d.ts +54 -0
  412. package/dist/src/react/core/genui/json-render.d.ts.map +1 -0
  413. package/dist/src/react/core/genui/json-render.js +64 -0
  414. package/dist/src/react/core/genui/json-render.js.map +1 -0
  415. package/dist/src/react/core/genui/playwright.d.ts +12 -0
  416. package/dist/src/react/core/genui/playwright.d.ts.map +1 -0
  417. package/dist/src/react/core/genui/playwright.js +141 -0
  418. package/dist/src/react/core/genui/playwright.js.map +1 -0
  419. package/dist/src/react/core/genui/react-registry.d.ts +22 -0
  420. package/dist/src/react/core/genui/react-registry.d.ts.map +1 -0
  421. package/dist/src/react/core/genui/react-registry.js +72 -0
  422. package/dist/src/react/core/genui/react-registry.js.map +1 -0
  423. package/dist/src/react/core/genui/server.d.ts +32 -0
  424. package/dist/src/react/core/genui/server.d.ts.map +1 -0
  425. package/dist/src/react/core/genui/server.js +66 -0
  426. package/dist/src/react/core/genui/server.js.map +1 -0
  427. package/dist/src/react/core/genui/types.d.ts +98 -0
  428. package/dist/src/react/core/genui/types.d.ts.map +1 -0
  429. package/dist/src/react/core/genui/types.js +3 -0
  430. package/dist/src/react/core/genui/types.js.map +1 -0
  431. package/dist/src/react/core/genui/use-generative-ui.d.ts +42 -0
  432. package/dist/src/react/core/genui/use-generative-ui.d.ts.map +1 -0
  433. package/dist/src/react/core/genui/use-generative-ui.js +186 -0
  434. package/dist/src/react/core/genui/use-generative-ui.js.map +1 -0
  435. package/dist/src/react/core/http-error.d.ts +33 -0
  436. package/dist/src/react/core/http-error.d.ts.map +1 -0
  437. package/dist/src/react/core/http-error.js +47 -0
  438. package/dist/src/react/core/http-error.js.map +1 -0
  439. package/dist/src/react/core/index.d.ts +35 -0
  440. package/dist/src/react/core/index.d.ts.map +1 -0
  441. package/dist/src/react/core/index.js +34 -0
  442. package/dist/src/react/core/index.js.map +1 -0
  443. package/dist/src/react/core/markdown/agent-markdown.d.ts +39 -0
  444. package/dist/src/react/core/markdown/agent-markdown.d.ts.map +1 -0
  445. package/dist/src/react/core/markdown/agent-markdown.js +22 -0
  446. package/dist/src/react/core/markdown/agent-markdown.js.map +1 -0
  447. package/dist/src/react/core/markdown/index.d.ts +2 -0
  448. package/dist/src/react/core/markdown/index.d.ts.map +1 -0
  449. package/dist/src/react/core/markdown/index.js +2 -0
  450. package/dist/src/react/core/markdown/index.js.map +1 -0
  451. package/dist/src/react/core/media/index.d.ts +64 -0
  452. package/dist/src/react/core/media/index.d.ts.map +1 -0
  453. package/dist/src/react/core/media/index.js +135 -0
  454. package/dist/src/react/core/media/index.js.map +1 -0
  455. package/dist/src/react/core/media/tus.d.ts +13 -0
  456. package/dist/src/react/core/media/tus.d.ts.map +1 -0
  457. package/dist/src/react/core/media/tus.js +59 -0
  458. package/dist/src/react/core/media/tus.js.map +1 -0
  459. package/dist/src/react/core/presentation/phrasing.d.ts +25 -0
  460. package/dist/src/react/core/presentation/phrasing.d.ts.map +1 -0
  461. package/dist/src/react/core/presentation/phrasing.js +58 -0
  462. package/dist/src/react/core/presentation/phrasing.js.map +1 -0
  463. package/dist/src/react/core/presentation/result-view.d.ts +43 -0
  464. package/dist/src/react/core/presentation/result-view.d.ts.map +1 -0
  465. package/dist/src/react/core/presentation/result-view.js +90 -0
  466. package/dist/src/react/core/presentation/result-view.js.map +1 -0
  467. package/dist/src/react/core/presentation/tool-activity.d.ts +106 -0
  468. package/dist/src/react/core/presentation/tool-activity.d.ts.map +1 -0
  469. package/dist/src/react/core/presentation/tool-activity.js +165 -0
  470. package/dist/src/react/core/presentation/tool-activity.js.map +1 -0
  471. package/dist/src/react/core/presentation/use-tool-catalog.d.ts +39 -0
  472. package/dist/src/react/core/presentation/use-tool-catalog.d.ts.map +1 -0
  473. package/dist/src/react/core/presentation/use-tool-catalog.js +77 -0
  474. package/dist/src/react/core/presentation/use-tool-catalog.js.map +1 -0
  475. package/dist/src/react/core/provider.d.ts +68 -0
  476. package/dist/src/react/core/provider.d.ts.map +1 -0
  477. package/dist/src/react/core/provider.js +61 -0
  478. package/dist/src/react/core/provider.js.map +1 -0
  479. package/dist/src/react/core/queue/model.d.ts +73 -0
  480. package/dist/src/react/core/queue/model.d.ts.map +1 -0
  481. package/dist/src/react/core/queue/model.js +2 -0
  482. package/dist/src/react/core/queue/model.js.map +1 -0
  483. package/dist/src/react/core/quota/use-quota.d.ts +35 -0
  484. package/dist/src/react/core/quota/use-quota.d.ts.map +1 -0
  485. package/dist/src/react/core/quota/use-quota.js +47 -0
  486. package/dist/src/react/core/quota/use-quota.js.map +1 -0
  487. package/dist/src/react/core/reasoning/timing.d.ts +38 -0
  488. package/dist/src/react/core/reasoning/timing.d.ts.map +1 -0
  489. package/dist/src/react/core/reasoning/timing.js +73 -0
  490. package/dist/src/react/core/reasoning/timing.js.map +1 -0
  491. package/dist/src/react/core/run-errors.d.ts +37 -0
  492. package/dist/src/react/core/run-errors.d.ts.map +1 -0
  493. package/dist/src/react/core/run-errors.js +37 -0
  494. package/dist/src/react/core/run-errors.js.map +1 -0
  495. package/dist/src/react/core/stored-message-to-ui-message.d.ts +4 -0
  496. package/dist/src/react/core/stored-message-to-ui-message.d.ts.map +1 -0
  497. package/dist/src/react/core/stored-message-to-ui-message.js +216 -0
  498. package/dist/src/react/core/stored-message-to-ui-message.js.map +1 -0
  499. package/dist/src/react/core/stored-thread-to-ui-messages.d.ts +82 -0
  500. package/dist/src/react/core/stored-thread-to-ui-messages.d.ts.map +1 -0
  501. package/dist/src/react/core/stored-thread-to-ui-messages.js +116 -0
  502. package/dist/src/react/core/stored-thread-to-ui-messages.js.map +1 -0
  503. package/dist/src/react/core/threads/threads-events.d.ts +22 -0
  504. package/dist/src/react/core/threads/threads-events.d.ts.map +1 -0
  505. package/dist/src/react/core/threads/threads-events.js +21 -0
  506. package/dist/src/react/core/threads/threads-events.js.map +1 -0
  507. package/dist/src/react/core/threads/use-threads.d.ts +31 -0
  508. package/dist/src/react/core/threads/use-threads.d.ts.map +1 -0
  509. package/dist/src/react/core/threads/use-threads.js +81 -0
  510. package/dist/src/react/core/threads/use-threads.js.map +1 -0
  511. package/dist/src/react/core/transcript/index.d.ts +4 -0
  512. package/dist/src/react/core/transcript/index.d.ts.map +1 -0
  513. package/dist/src/react/core/transcript/index.js +4 -0
  514. package/dist/src/react/core/transcript/index.js.map +1 -0
  515. package/dist/src/react/core/transcript/model.d.ts +399 -0
  516. package/dist/src/react/core/transcript/model.d.ts.map +1 -0
  517. package/dist/src/react/core/transcript/model.js +725 -0
  518. package/dist/src/react/core/transcript/model.js.map +1 -0
  519. package/dist/src/react/core/transcript/use-chat-transcript.d.ts +254 -0
  520. package/dist/src/react/core/transcript/use-chat-transcript.d.ts.map +1 -0
  521. package/dist/src/react/core/transcript/use-chat-transcript.js +572 -0
  522. package/dist/src/react/core/transcript/use-chat-transcript.js.map +1 -0
  523. package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts +33 -0
  524. package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts.map +1 -0
  525. package/dist/src/react/core/transcript/use-stick-to-bottom.js +48 -0
  526. package/dist/src/react/core/transcript/use-stick-to-bottom.js.map +1 -0
  527. package/dist/src/react/core/use-agent-chat.d.ts +341 -0
  528. package/dist/src/react/core/use-agent-chat.d.ts.map +1 -0
  529. package/dist/src/react/core/use-agent-chat.js +1118 -0
  530. package/dist/src/react/core/use-agent-chat.js.map +1 -0
  531. package/dist/src/react/genui/index.d.ts +1 -7
  532. package/dist/src/react/genui/index.d.ts.map +1 -1
  533. package/dist/src/react/genui/index.js +1 -7
  534. package/dist/src/react/genui/index.js.map +1 -1
  535. package/dist/src/react/genui/json-render.d.ts +1 -5
  536. package/dist/src/react/genui/json-render.d.ts.map +1 -1
  537. package/dist/src/react/genui/json-render.js +1 -5
  538. package/dist/src/react/genui/json-render.js.map +1 -1
  539. package/dist/src/react/genui/server.d.ts +2 -0
  540. package/dist/src/react/genui/server.d.ts.map +1 -0
  541. package/dist/src/react/genui/server.js +2 -0
  542. package/dist/src/react/genui/server.js.map +1 -0
  543. package/dist/src/react/genui/server_playwright.d.ts +2 -0
  544. package/dist/src/react/genui/server_playwright.d.ts.map +1 -0
  545. package/dist/src/react/genui/server_playwright.js +2 -0
  546. package/dist/src/react/genui/server_playwright.js.map +1 -0
  547. package/dist/src/react/index.d.ts +5 -7
  548. package/dist/src/react/index.d.ts.map +1 -1
  549. package/dist/src/react/index.js +5 -7
  550. package/dist/src/react/index.js.map +1 -1
  551. package/dist/src/react/markdown.d.ts +1 -6
  552. package/dist/src/react/markdown.d.ts.map +1 -1
  553. package/dist/src/react/markdown.js +1 -6
  554. package/dist/src/react/markdown.js.map +1 -1
  555. package/dist/src/react/media.d.ts +1 -17
  556. package/dist/src/react/media.d.ts.map +1 -1
  557. package/dist/src/react/media.js +1 -17
  558. package/dist/src/react/media.js.map +1 -1
  559. package/dist/src/refusal.d.ts +3 -0
  560. package/dist/src/refusal.d.ts.map +1 -0
  561. package/dist/src/refusal.js +3 -0
  562. package/dist/src/refusal.js.map +1 -0
  563. package/dist/src/spi/agent-runner.d.ts +6 -0
  564. package/dist/src/spi/agent-runner.d.ts.map +1 -1
  565. package/dist/src/spi/chat-queue.d.ts +4 -1
  566. package/dist/src/spi/chat-queue.d.ts.map +1 -1
  567. package/dist/src/spi/chat-queue.js.map +1 -1
  568. package/dist/src/spi/protocol-adapter.d.ts +3 -3
  569. package/dist/src/spi/roles-policy.d.ts +7 -0
  570. package/dist/src/spi/roles-policy.d.ts.map +1 -1
  571. package/dist/src/spi/tool.d.ts +18 -3
  572. package/dist/src/spi/tool.d.ts.map +1 -1
  573. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  574. package/dist/src/stores/lucid-schema.js +2 -0
  575. package/dist/src/stores/lucid-schema.js.map +1 -1
  576. package/dist/src/stores/lucid.d.ts.map +1 -1
  577. package/dist/src/stores/lucid.js +3 -0
  578. package/dist/src/stores/lucid.js.map +1 -1
  579. package/dist/src/testing/chat-queue-store-contract.d.ts.map +1 -1
  580. package/dist/src/testing/chat-queue-store-contract.js +4 -0
  581. package/dist/src/testing/chat-queue-store-contract.js.map +1 -1
  582. package/dist/src/testing/in-memory-store.d.ts.map +1 -1
  583. package/dist/src/testing/in-memory-store.js +1 -0
  584. package/dist/src/testing/in-memory-store.js.map +1 -1
  585. package/dist/src/tool-discovery.d.ts +1 -1
  586. package/dist/src/tool-discovery.d.ts.map +1 -1
  587. package/dist/src/tool-discovery.js +5 -1
  588. package/dist/src/tool-discovery.js.map +1 -1
  589. package/dist/src/tool-registry.d.ts +3 -0
  590. package/dist/src/tool-registry.d.ts.map +1 -1
  591. package/dist/src/tool-registry.js +15 -3
  592. package/dist/src/tool-registry.js.map +1 -1
  593. package/dist/src/tool-result-presentation.d.ts +12 -0
  594. package/dist/src/tool-result-presentation.d.ts.map +1 -0
  595. package/dist/src/tool-result-presentation.js +44 -0
  596. package/dist/src/tool-result-presentation.js.map +1 -0
  597. package/dist/src/types.d.ts +20 -0
  598. package/dist/src/types.d.ts.map +1 -1
  599. package/dist/src/ui-capabilities.d.ts +1 -8
  600. package/dist/src/ui-capabilities.d.ts.map +1 -1
  601. package/dist/src/ui-capabilities.js +3 -24
  602. package/dist/src/ui-capabilities.js.map +1 -1
  603. package/package.json +123 -22
  604. package/skills/agent-governance/SKILL.md +12 -4
  605. package/skills/agent-personas-agents/SKILL.md +2 -1
  606. package/skills/agent-setup/SKILL.md +36 -13
  607. package/skills/agent-testing/SKILL.md +22 -0
  608. package/skills/agent-tools/SKILL.md +54 -9
  609. package/dist/src/ag-ui/proposal-decision.d.ts.map +0 -1
  610. package/dist/src/ag-ui/proposal-decision.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { AgentBackendUnsupportedError } from '../backend.js';
3
+ import { useAgentConfig } from '../config/use-agent-config.js';
4
+ import { useAgentBackend } from '../provider.js';
5
+ import { acceptsFile, dragHasFiles, filesFromClipboard } from './files.js';
6
+ const DEFAULT_REJECTION = {
7
+ type: (file) => `${file.name} is not a supported file type`,
8
+ size: (file) => `${file.name} is too large`,
9
+ count: () => 'Too many files',
10
+ };
11
+ let sequence = 0;
12
+ /**
13
+ * Staged attachments for a composer, headless: validation (`accept`, `maxBytes`, `maxFiles`),
14
+ * one upload per file with progress and cancel, retry, previews, and the event handlers for a file
15
+ * input, a drop zone and paste — no markup, no styles. Send `refs` with the
16
+ * message, then `clear()`:
17
+ *
18
+ * ```ts
19
+ * await chat.sendMessage({ text }, { body: { attachments: files.refs } });
20
+ * files.clear();
21
+ * ```
22
+ */
23
+ export function useAttachments(options = {}) {
24
+ const backend = useAgentBackend(options.backend);
25
+ // The server's limits are the defaults, so a composer never repeats (and drifts from) them.
26
+ const { config } = useAgentConfig({ backend });
27
+ const limits = config?.attachments;
28
+ const accept = options.accept ?? limits?.allowedContentTypes;
29
+ const maxBytes = options.maxBytes ?? limits?.maxBytes;
30
+ const maxFiles = options.maxFiles ?? limits?.maxPerMessage;
31
+ const effective = {
32
+ ...options,
33
+ backend,
34
+ ...(accept !== undefined ? { accept } : {}),
35
+ ...(maxBytes !== undefined ? { maxBytes } : {}),
36
+ ...(maxFiles !== undefined ? { maxFiles } : {}),
37
+ };
38
+ const latest = useRef(effective);
39
+ latest.current = effective;
40
+ const [items, setItems] = useState([]);
41
+ const itemsRef = useRef(items);
42
+ itemsRef.current = items;
43
+ const controllers = useRef(new Map());
44
+ const [dragDepth, setDragDepth] = useState(0);
45
+ const patch = useCallback((id, change) => {
46
+ setItems((current) => current.map((item) => (item.id === id ? { ...item, ...change } : item)));
47
+ }, []);
48
+ const start = useCallback((item) => {
49
+ const { upload, backend } = latest.current;
50
+ const run = upload ??
51
+ (backend.uploadAttachment !== undefined
52
+ ? backend.uploadAttachment.bind(backend)
53
+ : undefined);
54
+ if (run === undefined) {
55
+ patch(item.id, {
56
+ status: 'error',
57
+ error: new AgentBackendUnsupportedError('uploadAttachment').message,
58
+ });
59
+ return;
60
+ }
61
+ const controller = new AbortController();
62
+ controllers.current.set(item.id, controller);
63
+ run(item.file, {
64
+ signal: controller.signal,
65
+ onProgress: (fraction) => patch(item.id, { progress: Math.max(0, Math.min(1, fraction)) }),
66
+ }).then((attachment) => {
67
+ if (controller.signal.aborted)
68
+ return;
69
+ controllers.current.delete(item.id);
70
+ patch(item.id, { status: 'ready', progress: 1, attachment });
71
+ }, (error) => {
72
+ if (controller.signal.aborted)
73
+ return;
74
+ controllers.current.delete(item.id);
75
+ patch(item.id, {
76
+ status: 'error',
77
+ error: error instanceof Error ? error.message : String(error),
78
+ });
79
+ });
80
+ }, [patch]);
81
+ const add = useCallback((files) => {
82
+ if (files == null)
83
+ return;
84
+ const { accept, maxBytes, maxFiles, describeRejection } = latest.current;
85
+ const describe = (reason, file) => describeRejection?.(reason, file) ?? DEFAULT_REJECTION[reason](file);
86
+ let room = maxFiles === undefined
87
+ ? Number.POSITIVE_INFINITY
88
+ : maxFiles - itemsRef.current.filter((item) => item.status !== 'rejected').length;
89
+ const staged = [];
90
+ for (const file of Array.from(files)) {
91
+ sequence += 1;
92
+ const base = {
93
+ id: `att-${sequence}`,
94
+ file,
95
+ name: file.name,
96
+ size: file.size,
97
+ type: file.type,
98
+ progress: 0,
99
+ };
100
+ const reason = !acceptsFile(accept, file)
101
+ ? 'type'
102
+ : maxBytes !== undefined && file.size > maxBytes
103
+ ? 'size'
104
+ : room <= 0
105
+ ? 'count'
106
+ : undefined;
107
+ if (reason !== undefined) {
108
+ staged.push({ ...base, status: 'rejected', error: describe(reason, file) });
109
+ continue;
110
+ }
111
+ room -= 1;
112
+ const previewUrl = file.type.startsWith('image/') && typeof URL.createObjectURL === 'function'
113
+ ? URL.createObjectURL(file)
114
+ : undefined;
115
+ staged.push({ ...base, status: 'uploading', ...(previewUrl ? { previewUrl } : {}) });
116
+ }
117
+ if (staged.length === 0)
118
+ return;
119
+ setItems((current) => [...current, ...staged]);
120
+ for (const item of staged) {
121
+ if (item.status === 'uploading')
122
+ start(item);
123
+ }
124
+ }, [start]);
125
+ const release = useCallback((item) => {
126
+ if (item === undefined)
127
+ return;
128
+ controllers.current.get(item.id)?.abort();
129
+ controllers.current.delete(item.id);
130
+ if (item.previewUrl !== undefined && typeof URL.revokeObjectURL === 'function') {
131
+ URL.revokeObjectURL(item.previewUrl);
132
+ }
133
+ }, []);
134
+ const remove = useCallback((id) => {
135
+ release(itemsRef.current.find((item) => item.id === id));
136
+ setItems((current) => current.filter((item) => item.id !== id));
137
+ }, [release]);
138
+ const clear = useCallback(() => {
139
+ for (const item of itemsRef.current)
140
+ release(item);
141
+ setItems([]);
142
+ }, [release]);
143
+ const retry = useCallback((id) => {
144
+ const item = itemsRef.current.find((candidate) => candidate.id === id);
145
+ if (item === undefined || item.status !== 'error')
146
+ return;
147
+ const { error: _previous, ...rest } = item;
148
+ const again = { ...rest, status: 'uploading', progress: 0 };
149
+ setItems((current) => current.map((candidate) => (candidate.id === id ? again : candidate)));
150
+ start(again);
151
+ }, [start]);
152
+ // Unmount: cancel what is in flight and free the previews.
153
+ useEffect(() => () => {
154
+ for (const item of itemsRef.current)
155
+ release(item);
156
+ }, [release]);
157
+ const onPaste = useCallback((event) => {
158
+ const files = filesFromClipboard(event.clipboardData);
159
+ if (files.length === 0)
160
+ return;
161
+ event.preventDefault();
162
+ add(files);
163
+ }, [add]);
164
+ const dropZoneProps = useMemo(() => ({
165
+ onDragEnter: (event) => {
166
+ if (!dragHasFiles(event.dataTransfer))
167
+ return;
168
+ event.preventDefault();
169
+ setDragDepth((depth) => depth + 1);
170
+ },
171
+ onDragOver: (event) => {
172
+ // Without this the browser never fires `drop` — it opens the file instead.
173
+ if (dragHasFiles(event.dataTransfer))
174
+ event.preventDefault();
175
+ },
176
+ onDragLeave: (event) => {
177
+ if (!dragHasFiles(event.dataTransfer))
178
+ return;
179
+ setDragDepth((depth) => Math.max(0, depth - 1));
180
+ },
181
+ onDrop: (event) => {
182
+ if (!dragHasFiles(event.dataTransfer))
183
+ return;
184
+ event.preventDefault();
185
+ setDragDepth(0);
186
+ add(event.dataTransfer?.files);
187
+ },
188
+ }), [add]);
189
+ const inputProps = useMemo(() => ({
190
+ type: 'file',
191
+ accept: typeof accept === 'string' ? accept : accept?.join(','),
192
+ multiple: maxFiles === undefined || maxFiles > 1,
193
+ onChange: (event) => {
194
+ const input = event.currentTarget;
195
+ add(input.files);
196
+ // Let the same file be picked again after a remove.
197
+ input.value = '';
198
+ },
199
+ }), [accept, maxFiles, add]);
200
+ return useMemo(() => {
201
+ const ready = items.filter((item) => item.status === 'ready' && item.attachment !== undefined);
202
+ return {
203
+ items,
204
+ add,
205
+ remove,
206
+ retry,
207
+ clear,
208
+ isUploading: items.some((item) => item.status === 'uploading'),
209
+ refs: ready.map((item) => ({ mediaId: item.attachment.mediaId })),
210
+ inputProps,
211
+ dropZoneProps,
212
+ isDragging: dragDepth > 0,
213
+ onPaste,
214
+ };
215
+ }, [items, add, remove, retry, clear, inputProps, dropZoneProps, dragDepth, onPaste]);
216
+ }
217
+ //# sourceMappingURL=use-attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-attachments.js","sourceRoot":"","sources":["../../../../../src/react/core/attachments/use-attachments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ import type { ActionProposal, ActionProposalMutationResult, AgentCatalogEntry, AgentClientConfig, ChatQueueState, MessageAttachment, MessageFeedback, MessageFeedbackValue, ModelCatalogView, QuotaReport, SkillCatalogEntry, ThreadDetail, ThreadSummary, ToolCatalogEntry } from '../../index.js';
2
+ import type { HttpErrorListener } from './http-error.js';
3
+ /**
4
+ * Partial update accepted by `PATCH <base>/threads/:threadId`. `defaultAgent: null` clears a
5
+ * previously-set default back to the module's own default; omitting it leaves the thread's
6
+ * current default untouched.
7
+ */
8
+ export interface ThreadPatch {
9
+ title?: string;
10
+ defaultAgent?: string | null;
11
+ /** Pin a catalog model on the thread; `null` unpins it. */
12
+ model?: string | null;
13
+ /** Pin one of the agent's personas on the thread; `null` clears it (the agent's default applies). */
14
+ persona?: string | null;
15
+ }
16
+ /** Starting a turn: the body `POST <base>/chat` takes (see docs/stream-protocol.md). */
17
+ export interface ChatStreamRequest {
18
+ /** `{ message, threadId?, agent?, persona?, model?, attachments?, pageContext?, regenerate?, … }`. */
19
+ body: Record<string, unknown>;
20
+ /** Per-request headers the AI SDK was handed for this send. */
21
+ headers?: Record<string, string>;
22
+ /** Aborted when the user stops the turn. */
23
+ signal?: AbortSignal;
24
+ }
25
+ /** Attaching to a run that is already streaming: `GET <base>/chat/:runId/stream?after=<seq>`. */
26
+ export interface ResumeStreamRequest {
27
+ runId: string;
28
+ /**
29
+ * The sequence number (SSE `id:`) of the last frame the client already has. Omitted → replay
30
+ * from the first frame. A backend that cannot skip may ignore it: the transport also drops frames
31
+ * at or below it.
32
+ */
33
+ after?: number;
34
+ headers?: Record<string, string>;
35
+ signal?: AbortSignal;
36
+ }
37
+ /**
38
+ * An open chat stream: the raw `text/event-stream` bytes in the stream-protocol framing, plus the
39
+ * identity a backend may learn before the first frame (the `X-Agent-Run-Id` / `X-Agent-Thread-Id`
40
+ * headers). The body's own `event: meta` frame supplies them otherwise.
41
+ */
42
+ export interface ChatStreamResponse {
43
+ proposalDecision?: {
44
+ threadId: string;
45
+ proposalDecision: ActionProposalMutationResult | {
46
+ status: 'ambiguous';
47
+ proposalIds: string[];
48
+ };
49
+ text?: string;
50
+ };
51
+ body: ReadableStream<Uint8Array>;
52
+ runId?: string;
53
+ threadId?: string;
54
+ /**
55
+ * The server queued the message instead of starting a turn (`202`): the thread already had one
56
+ * running — another tab, another device. `body` is then empty; the transport reports this as a
57
+ * transient `data-queue` part and `useAgentChat` moves the message into `chat.queue`.
58
+ */
59
+ queued?: QueuedSendResult;
60
+ }
61
+ /**
62
+ * `POST <base>/chat` answered `202`: the message waits in the thread's queue (see
63
+ * docs/stream-protocol.md, "Message queue").
64
+ */
65
+ export interface QueuedSendResult {
66
+ queued: true;
67
+ threadId: string;
68
+ /** The queued message's id — also the id of the run it will start. */
69
+ messageId: string;
70
+ /** 0-based place in the queue when it was queued. */
71
+ position: number;
72
+ queue: ChatQueueState;
73
+ /** Set when it started straight away (the thread was idle after all): attach to this run. */
74
+ runId?: string;
75
+ /** The run an interrupt cancelled to make room for it. */
76
+ interrupting?: string;
77
+ }
78
+ /** What `PATCH <base>/queue/:messageId` takes. */
79
+ export interface QueuedMessageUpdate {
80
+ message?: string;
81
+ /** `[{ mediaId }]` refs replacing the message's attachments; `null` drops them. */
82
+ attachments?: Array<{
83
+ mediaId: string;
84
+ }> | null;
85
+ /** Move it to this 0-based place in the queue. */
86
+ position?: number;
87
+ }
88
+ /** What `POST <base>/messages/:id/feedback` takes. `value: null` clears the rating. */
89
+ export interface MessageFeedbackInput {
90
+ value: MessageFeedbackValue | null;
91
+ comment?: string;
92
+ }
93
+ export interface UploadAttachmentOptions {
94
+ signal?: AbortSignal;
95
+ /** Called with 0..1 as the upload progresses, when the backend can observe it. */
96
+ onProgress?: (fraction: number) => void;
97
+ }
98
+ /** How {@link AgentClient} reaches the server — handed to an {@link AttachmentUploadStrategy}. */
99
+ export interface AgentConnection {
100
+ /** The server's origin, trailing slash removed (`''` for same-origin). */
101
+ baseUrl: string;
102
+ /** The agent's route prefix, normalized to a leading slash (`'/agent'`), or `''`. */
103
+ path: string;
104
+ /** The client's static + per-request headers, resolved now (auth, CSRF). */
105
+ headers: () => Promise<Record<string, string>>;
106
+ credentials?: RequestCredentials;
107
+ fetch: typeof fetch;
108
+ /** The client's `onHttpError` — call it with an upload's error answer before throwing it. */
109
+ onHttpError?: HttpErrorListener;
110
+ }
111
+ /**
112
+ * Replaces {@link AgentClient}'s own `uploadAttachment` (`POST <path>/attachments`) — e.g.
113
+ * `mediaAttachments()` from `@adonis-agora/agent/react/media`, or your own storage. Gets the
114
+ * client's connection so it needs no configuration of its own. Resolve with the attachment your
115
+ * server's `AGENT_ATTACHMENT_STAGING` recognises by `mediaId`.
116
+ */
117
+ export type AttachmentUploadStrategy = (file: File, options: UploadAttachmentOptions, connection: AgentConnection) => Promise<MessageAttachment>;
118
+ /**
119
+ * Everything the React layer asks of a server — the seam between `useAgentChat` (and the other
120
+ * hooks) and whatever serves the agent. {@link AgentClient} is the default implementation, over the
121
+ * library's own REST routes with `fetch`. An app with its own client — a generated one, a different
122
+ * auth scheme (cookie session + CSRF header), a backend that is not this library at all but speaks
123
+ * docs/stream-protocol.md — implements this instead and passes it as `<AgentProvider backend>` (or
124
+ * per hook, `useAgentChat({ backend })`).
125
+ *
126
+ * The streaming, thread and cancel members are required: without them there is no chat. The rest
127
+ * are optional; a hook that needs one the backend does not have throws
128
+ * {@link AgentBackendUnsupportedError} when it is called, so a backend only implements what its
129
+ * server supports.
130
+ */
131
+ export interface AgentBackend {
132
+ /** Start a turn and return its SSE stream. Throw on a non-2xx answer. */
133
+ openChatStream(request: ChatStreamRequest): Promise<ChatStreamResponse>;
134
+ /** Attach to a streaming run. Resolve `null` when nothing is streaming under that id (HTTP 404). */
135
+ resumeChatStream(request: ResumeStreamRequest): Promise<ChatStreamResponse | null>;
136
+ /** Hard-stop a run server-side. */
137
+ cancelStream(runId: string): Promise<unknown>;
138
+ listThreads(): Promise<ThreadSummary[]>;
139
+ getThread(id: string): Promise<ThreadDetail>;
140
+ updateThread(id: string, patch: ThreadPatch): Promise<unknown>;
141
+ deleteThread(id: string): Promise<unknown>;
142
+ /**
143
+ * Queue a message on a thread (`POST <base>/chat` with `mode: 'queue'` or `'interrupt'`), which
144
+ * the server answers with `202` JSON rather than a stream. What `chat.queue` sends through; a
145
+ * backend without it keeps the composer blocked while a turn runs.
146
+ */
147
+ enqueueMessage?(request: ChatStreamRequest): Promise<QueuedSendResult>;
148
+ /** `GET <base>/threads/:id/queue`. */
149
+ getQueue?(threadId: string): Promise<ChatQueueState>;
150
+ /** `PATCH <base>/queue/:messageId` — edit and/or move a waiting message. */
151
+ updateQueuedMessage?(messageId: string, update: QueuedMessageUpdate): Promise<ChatQueueState>;
152
+ /** `DELETE <base>/queue/:messageId`. */
153
+ removeQueuedMessage?(messageId: string): Promise<ChatQueueState>;
154
+ /**
155
+ * `POST <base>/queue/:messageId/interrupt` — run a waiting message now: it moves to the head as an
156
+ * interrupt and the running turn is cancelled for it. `interrupting` is the run that was
157
+ * cancelled; `runId` is set instead when nothing was running and the message started at once.
158
+ * What `chat.queue.interrupt(id)` calls.
159
+ */
160
+ interruptQueuedMessage?(messageId: string): Promise<ChatQueueState & {
161
+ runId?: string;
162
+ interrupting?: string;
163
+ }>;
164
+ /** `DELETE <base>/threads/:id/queue`. */
165
+ clearQueue?(threadId: string): Promise<ChatQueueState>;
166
+ /** `POST <base>/threads/:id/queue/resume` — `runId` when the head started. */
167
+ resumeQueue?(threadId: string): Promise<ChatQueueState & {
168
+ runId?: string;
169
+ }>;
170
+ forkFromMessage?(threadId: string, messageId: string): Promise<ThreadSummary>;
171
+ promoteThread?(id: string): Promise<unknown>;
172
+ truncateFromMessage?(threadId: string, messageId: string): Promise<unknown>;
173
+ listActionProposals?(input: {
174
+ threadId: string;
175
+ }): Promise<ActionProposal[]>;
176
+ approveActionProposal?(input: {
177
+ threadId: string;
178
+ proposalId: string;
179
+ remember?: boolean;
180
+ }): Promise<ActionProposalMutationResult>;
181
+ rejectActionProposal?(input: {
182
+ threadId: string;
183
+ proposalId: string;
184
+ reason?: string;
185
+ }): Promise<ActionProposalMutationResult>;
186
+ approveToolCall?(input: {
187
+ toolCallId: string;
188
+ remember?: boolean;
189
+ via?: string;
190
+ }): Promise<unknown>;
191
+ rejectToolCall?(input: {
192
+ toolCallId: string;
193
+ reason?: string;
194
+ via?: string;
195
+ }): Promise<unknown>;
196
+ answerToolCall?(input: {
197
+ toolCallId: string;
198
+ answers?: Record<string, string[]>;
199
+ via?: string;
200
+ }): Promise<unknown>;
201
+ skipToolCall?(input: {
202
+ toolCallId: string;
203
+ via?: string;
204
+ }): Promise<unknown>;
205
+ uploadAttachment?(file: File, options?: UploadAttachmentOptions): Promise<MessageAttachment>;
206
+ listTools?(agent?: string): Promise<ToolCatalogEntry[]>;
207
+ listSkills?(threadId?: string): Promise<SkillCatalogEntry[]>;
208
+ /** `GET <base>/quota` — every budget window, and which one blocks sends, if any. */
209
+ getQuota?(): Promise<QuotaReport>;
210
+ /** `GET <base>/models?agent=` — what a model picker offers. */
211
+ listModels?(agent?: string): Promise<ModelCatalogView>;
212
+ /** `GET <base>/agents` — what an agent picker offers. */
213
+ listAgents?(): Promise<AgentCatalogEntry[]>;
214
+ /** `GET <base>/config` — attachment limits and upload mode, and which features are on. */
215
+ getConfig?(): Promise<AgentClientConfig>;
216
+ setMessageFeedback?(messageId: string, input: MessageFeedbackInput): Promise<{
217
+ feedback: MessageFeedback | null;
218
+ }>;
219
+ }
220
+ /** An optional {@link AgentBackend} member the bound backend does not implement was called. */
221
+ export declare class AgentBackendUnsupportedError extends Error {
222
+ readonly method: string;
223
+ constructor(method: string);
224
+ }
225
+ type OptionalMethod = {
226
+ [K in keyof AgentBackend]-?: undefined extends AgentBackend[K] ? K : never;
227
+ }[keyof AgentBackend];
228
+ /**
229
+ * The optional backend method `name`, bound — or a throw naming it. For hook code that has to call
230
+ * something a backend may not offer.
231
+ */
232
+ export declare function requireBackendMethod<K extends OptionalMethod>(backend: AgentBackend, name: K): NonNullable<AgentBackend[K]>;
233
+ export {};
234
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../src/react/core/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** An optional {@link AgentBackend} member the bound backend does not implement was called. */
2
+ export class AgentBackendUnsupportedError extends Error {
3
+ method;
4
+ constructor(method) {
5
+ super(`The agent backend does not implement ${method}()`);
6
+ this.method = method;
7
+ this.name = 'AgentBackendUnsupportedError';
8
+ }
9
+ }
10
+ /**
11
+ * The optional backend method `name`, bound — or a throw naming it. For hook code that has to call
12
+ * something a backend may not offer.
13
+ */
14
+ export function requireBackendMethod(backend, name) {
15
+ const method = backend[name];
16
+ if (typeof method !== 'function') {
17
+ throw new AgentBackendUnsupportedError(name);
18
+ }
19
+ return method.bind(backend);
20
+ }
21
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../../src/react/core/backend.ts"],"names":[],"mappings":"AAgPA,+FAA+F;AAC/F,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAChC,MAAM;IAA3B,YAAqB,MAAc;QACjC,KAAK,CAAC,wCAAwC,MAAM,IAAI,CAAC,CAAC;sBADvC,MAAM;QAEzB,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAMD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAqB,EACrB,IAAO;IAEP,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAQ,MAAwC,CAAC,IAAI,CAAC,OAAO,CAAiC,CAAC;AACjG,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { StoredMessage } from './client-wire.js';
2
+ /**
3
+ * A sub-agent the conversation started and did not wait for. The chat is free while it works, so a
4
+ * client has to be able to say what is still running and to show the answer when it lands — neither
5
+ * of which the turn that started it can report, because that turn is over.
6
+ */
7
+ export interface BackgroundRun {
8
+ /** The run doing the work. Also what stamps the message it eventually posts. */
9
+ runId: string;
10
+ /** The agent working on it. */
11
+ agent: string;
12
+ /** The `agent`-kind call that started it — what a UI keys its card off. */
13
+ toolCallId: string;
14
+ toolName: string;
15
+ /**
16
+ * `delivered` the moment the thread holds a message stamped with this run. A run that FAILED
17
+ * reads as delivered too: it posts a message saying so, which is the point — there is no third
18
+ * state a reader could act on differently, and "running" for ever is the state to avoid.
19
+ */
20
+ status: 'running' | 'delivered';
21
+ /** The message it posted, once it did. */
22
+ message?: StoredMessage;
23
+ }
24
+ /**
25
+ * Every sub-agent this thread started in the background, and whether each has reported back.
26
+ *
27
+ * Derived from the transcript rather than tracked in session state, so it survives a reload and a
28
+ * second tab: the receipt is a persisted tool result, and the answer is a persisted message stamped
29
+ * with the run that wrote it. Nothing here needs a live connection to be true.
30
+ */
31
+ export declare function backgroundRunsFromThread(messages: readonly StoredMessage[]): BackgroundRun[];
32
+ //# sourceMappingURL=background-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-runs.d.ts","sourceRoot":"","sources":["../../../../src/react/core/background-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AA0BD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE,CAyB5F"}
@@ -0,0 +1,47 @@
1
+ function asReceipt(output) {
2
+ if (typeof output !== 'object' || output === null) {
3
+ return null;
4
+ }
5
+ const candidate = output;
6
+ if (candidate.detached !== true ||
7
+ candidate.status !== 'started' ||
8
+ typeof candidate.agent !== 'string' ||
9
+ typeof candidate.runId !== 'string') {
10
+ return null;
11
+ }
12
+ return { detached: true, status: 'started', agent: candidate.agent, runId: candidate.runId };
13
+ }
14
+ /**
15
+ * Every sub-agent this thread started in the background, and whether each has reported back.
16
+ *
17
+ * Derived from the transcript rather than tracked in session state, so it survives a reload and a
18
+ * second tab: the receipt is a persisted tool result, and the answer is a persisted message stamped
19
+ * with the run that wrote it. Nothing here needs a live connection to be true.
20
+ */
21
+ export function backgroundRunsFromThread(messages) {
22
+ const byRun = new Map();
23
+ for (const message of messages) {
24
+ for (const result of message.toolResults ?? []) {
25
+ const receipt = asReceipt(result.output);
26
+ if (receipt === null || byRun.has(receipt.runId)) {
27
+ continue;
28
+ }
29
+ byRun.set(receipt.runId, {
30
+ runId: receipt.runId,
31
+ agent: receipt.agent,
32
+ toolCallId: result.id,
33
+ toolName: result.name,
34
+ status: 'running',
35
+ });
36
+ }
37
+ }
38
+ for (const message of messages) {
39
+ const run = message.runId === undefined ? undefined : byRun.get(message.runId);
40
+ if (run !== undefined) {
41
+ run.status = 'delivered';
42
+ run.message = message;
43
+ }
44
+ }
45
+ return [...byRun.values()];
46
+ }
47
+ //# sourceMappingURL=background-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-runs.js","sourceRoot":"","sources":["../../../../src/react/core/background-runs.ts"],"names":[],"mappings":"AAiCA,SAAS,SAAS,CAAC,MAAe;IAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,MAA0B,CAAC;IAC7C,IACE,SAAS,CAAC,QAAQ,KAAK,IAAI;QAC3B,SAAS,CAAC,MAAM,KAAK,SAAS;QAC9B,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;QACnC,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAkC;IACzE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,SAAS;YACX,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;gBACvB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU,EAAE,MAAM,CAAC,EAAE;gBACrB,QAAQ,EAAE,MAAM,CAAC,IAAI;gBACrB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;YACzB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { AgentCatalogEntry, PersonaCatalogEntry } from '../../../index.js';
2
+ import { type AgentBackend } from '../backend.js';
3
+ export interface UseAgentsOptions {
4
+ /** Default: the enclosing `<AgentProvider>`'s. Must implement `listAgents`. */
5
+ backend?: AgentBackend;
6
+ /** `false` holds the request. Default `true`. */
7
+ enabled?: boolean;
8
+ }
9
+ export interface AgentsState {
10
+ /** `[]` until loaded. */
11
+ agents: AgentCatalogEntry[];
12
+ /** The agent a turn runs as when none is named. */
13
+ defaultAgent: string | null;
14
+ /**
15
+ * An agent's personas — the data behind a persona picker. `agent` omitted → the default agent's.
16
+ * `[]` for an agent that declares none (or before the list loads).
17
+ */
18
+ personasOf: (agent?: string) => PersonaCatalogEntry[];
19
+ /** The persona `agent` (default: the default agent) runs under when a send names none, or `null`. */
20
+ defaultPersonaOf: (agent?: string) => string | null;
21
+ isLoading: boolean;
22
+ error: Error | null;
23
+ refresh: () => Promise<void>;
24
+ }
25
+ /**
26
+ * The registered agents (`GET <base>/agents`) — the data behind an agent picker, and each agent's
27
+ * personas behind a persona picker. Send the pick as `useAgentChat({ agent, persona })`, or pin it on
28
+ * a thread with `PATCH <base>/threads/:id { defaultAgent, persona }`.
29
+ */
30
+ export declare function useAgents(options?: UseAgentsOptions): AgentsState;
31
+ //# sourceMappingURL=use-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-agents.d.ts","sourceRoot":"","sources":["../../../../../src/react/core/catalog/use-agents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,eAAe,CAAC;AAIxE,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,mDAAmD;IACnD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,mBAAmB,EAAE,CAAC;IACtD,qGAAqG;IACrG,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,WAAW,CA2BrE"}