@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,435 @@
1
+ import { readErrorAnswer, readErrorResponse, reportHttpError, } from './http-error.js';
2
+ /**
3
+ * Thrown by {@link AgentClient} on a non-2xx response. Carries the HTTP `status` so callers can
4
+ * branch (e.g. 403 → "not your thread", 429 → quota) instead of string-matching a generic Error,
5
+ * and what the server said: `message` is the body's `message` when it sent one (so a hook that
6
+ * shows `error.message` shows the server's words), `code` its machine-readable `code`, and `body`
7
+ * the whole answer, parsed when it is JSON.
8
+ */
9
+ export class AgentHttpError extends Error {
10
+ status;
11
+ method;
12
+ path;
13
+ /** The answer's body: parsed JSON, else its text; `undefined` when empty. */
14
+ body;
15
+ /** The body's `code` (`quota_exceeded`, …), when the server sent one. */
16
+ code;
17
+ constructor(status, method, path, statusText, answer = { body: undefined, message: undefined, code: undefined }) {
18
+ super(answer.message ?? `Agent request failed: ${method} ${path} → ${status} ${statusText}`);
19
+ this.status = status;
20
+ this.method = method;
21
+ this.path = path;
22
+ this.name = 'AgentHttpError';
23
+ this.body = answer.body;
24
+ this.code = answer.code;
25
+ }
26
+ /** Read a refused `response`'s body into an error. */
27
+ static async from(response, method, path) {
28
+ return new AgentHttpError(response.status, method, path, response.statusText, await readErrorResponse(response));
29
+ }
30
+ }
31
+ /** `'/api/agent'` from `'api/agent'`, `'/api/agent/'`, …; `''` for an empty path. */
32
+ export function normalizeAgentPath(path) {
33
+ const trimmed = (path ?? 'agent').replace(/^\/+|\/+$/g, '');
34
+ return trimmed === '' ? '' : `/${trimmed}`;
35
+ }
36
+ const HEADER_RUN_ID = 'x-agent-run-id';
37
+ const HEADER_THREAD_ID = 'x-agent-thread-id';
38
+ /**
39
+ * Framework-agnostic REST client for the Adonis agent endpoints — the default {@link AgentBackend}.
40
+ * Used by `useAgentChat`, but standalone-usable (vanilla fetch, no React).
41
+ */
42
+ export class AgentClient {
43
+ options;
44
+ constructor(options = {}) {
45
+ this.options = options;
46
+ }
47
+ /** `POST <path>/chat` → the turn's SSE stream. Throws {@link AgentHttpError} on a non-2xx. */
48
+ async openChatStream(request) {
49
+ const response = await this.fetchImpl()(`${this.root()}/chat`, {
50
+ method: 'POST',
51
+ headers: {
52
+ 'content-type': 'application/json',
53
+ accept: 'text/event-stream',
54
+ ...(await this.resolveHeaders()),
55
+ ...request.headers,
56
+ },
57
+ body: JSON.stringify(request.body),
58
+ ...this.credentials(),
59
+ ...(request.signal !== undefined ? { signal: request.signal } : {}),
60
+ });
61
+ if (response.status === 202) {
62
+ // Queued behind a turn already running on the thread: JSON, not a stream.
63
+ return { body: emptyStream(), queued: (await response.json()) };
64
+ }
65
+ if (response.ok && response.headers.get('content-type')?.includes('application/json')) {
66
+ const decision = (await response.json());
67
+ if (decision.proposalDecision !== undefined && typeof decision.threadId === 'string')
68
+ return { body: emptyStream(), threadId: decision.threadId, proposalDecision: decision };
69
+ throw new Error('Unexpected JSON chat response');
70
+ }
71
+ if (!response.ok || !response.body) {
72
+ throw await this.failure(response, 'POST', `${this.agentPath()}/chat`);
73
+ }
74
+ return streamResponse(response);
75
+ }
76
+ /**
77
+ * `POST <path>/chat` for a message that should wait in the thread's queue — the body carries
78
+ * `mode: 'queue'` (or `'interrupt'`), which the server always answers with `202` JSON.
79
+ */
80
+ enqueueMessage(request) {
81
+ return this.request('POST', '/chat', {
82
+ mode: 'queue',
83
+ ...request.body,
84
+ });
85
+ }
86
+ /** `GET <path>/threads/:id/queue` — the thread's waiting messages, and whether it drains. */
87
+ getQueue(threadId) {
88
+ return this.request('GET', `/threads/${encodeURIComponent(threadId)}/queue`);
89
+ }
90
+ /** `PATCH <path>/queue/:messageId` — change a waiting message's text/attachments, or move it. */
91
+ updateQueuedMessage(messageId, update) {
92
+ return this.request('PATCH', `/queue/${encodeURIComponent(messageId)}`, update);
93
+ }
94
+ /** `DELETE <path>/queue/:messageId`. */
95
+ removeQueuedMessage(messageId) {
96
+ return this.request('DELETE', `/queue/${encodeURIComponent(messageId)}`);
97
+ }
98
+ /**
99
+ * `POST <path>/queue/:messageId/interrupt` — run a waiting message now, cancelling the running
100
+ * turn for it. `runId` when nothing was running and it started; else `interrupting`.
101
+ */
102
+ interruptQueuedMessage(messageId) {
103
+ return this.request('POST', `/queue/${encodeURIComponent(messageId)}/interrupt`);
104
+ }
105
+ /** `DELETE <path>/threads/:id/queue` — drop every waiting message. */
106
+ clearQueue(threadId) {
107
+ return this.request('DELETE', `/threads/${encodeURIComponent(threadId)}/queue`);
108
+ }
109
+ /** `POST <path>/threads/:id/queue/resume` — lift a pause; `runId` when the head started. */
110
+ resumeQueue(threadId) {
111
+ return this.request('POST', `/threads/${encodeURIComponent(threadId)}/queue/resume`);
112
+ }
113
+ /**
114
+ * `GET <path>/chat/:runId/stream[?after=<seq>]` → the run's SSE stream, or `null` when nothing is
115
+ * streaming under that id (404).
116
+ */
117
+ async resumeChatStream(request) {
118
+ const path = `/chat/${encodeURIComponent(request.runId)}/stream`;
119
+ const query = request.after !== undefined && request.after > 0 ? `?after=${request.after}` : '';
120
+ const response = await this.fetchImpl()(`${this.root()}${path}${query}`, {
121
+ method: 'GET',
122
+ headers: {
123
+ accept: 'text/event-stream',
124
+ ...(await this.resolveHeaders()),
125
+ ...request.headers,
126
+ },
127
+ ...this.credentials(),
128
+ ...(request.signal !== undefined ? { signal: request.signal } : {}),
129
+ });
130
+ if (response.status === 404) {
131
+ return null;
132
+ }
133
+ if (!response.ok || !response.body) {
134
+ throw await this.failure(response, 'GET', `${this.agentPath()}${path}`);
135
+ }
136
+ return streamResponse(response);
137
+ }
138
+ /**
139
+ * Rate a message (`'up'`/`'down'`, optional comment) or clear its rating (`value: null`). Answers
140
+ * the stored rating.
141
+ */
142
+ setMessageFeedback(messageId, input) {
143
+ return this.request('POST', `/messages/${encodeURIComponent(messageId)}/feedback`, input);
144
+ }
145
+ listThreads() {
146
+ return this.request('GET', '/threads');
147
+ }
148
+ /**
149
+ * The skills this caller can invoke right now, scope-resolved — the same list, built by the same
150
+ * call, that the model is offered, so what a user can type after a `/` and what the agent can
151
+ * reach cannot drift apart. `threadId` reaches the host's own resolver, which may scope a skill to
152
+ * one conversation; omitted, the server reads it as a brand-new thread.
153
+ */
154
+ listSkills(threadId) {
155
+ const query = threadId === undefined ? '' : `?threadId=${encodeURIComponent(threadId)}`;
156
+ return this.request('GET', `/skills${query}`);
157
+ }
158
+ /**
159
+ * The tools this caller can reach through `agent` (the default agent when omitted), each with the
160
+ * server-declared `presentation` a chat narrates it by — the same list the model is offered.
161
+ * Prefer {@link useToolCatalog}, which fetches it once and shares it.
162
+ */
163
+ listTools(agent) {
164
+ const query = agent === undefined ? '' : `?agent=${encodeURIComponent(agent)}`;
165
+ return this.request('GET', `/tools${query}`);
166
+ }
167
+ getThread(id) {
168
+ return this.request('GET', `/threads/${encodeURIComponent(id)}`);
169
+ }
170
+ deleteThread(id) {
171
+ return this.request('DELETE', `/threads/${encodeURIComponent(id)}`);
172
+ }
173
+ forkFromMessage(threadId, messageId) {
174
+ return this.request('POST', `/threads/${encodeURIComponent(threadId)}/fork-from/${encodeURIComponent(messageId)}`);
175
+ }
176
+ /** General `PATCH <path>/threads/:threadId` — title and/or the thread's pinned default agent. */
177
+ updateThread(id, patch) {
178
+ return this.request('PATCH', `/threads/${encodeURIComponent(id)}`, patch);
179
+ }
180
+ /**
181
+ * Uploads a file (image/PDF) for a vision-capable model turn. Multipart, field name `file` —
182
+ * mirrors the backend's `POST <path>/attachments`. The returned {@link MessageAttachment} is
183
+ * what a caller then rides on `sendMessage({ text }, { body: { attachments: [...] } })`.
184
+ */
185
+ async uploadAttachment(file, options = {}) {
186
+ const upload = this.options.attachments?.upload;
187
+ if (upload !== undefined) {
188
+ return upload(file, options, this.connection());
189
+ }
190
+ // `fetch` cannot observe an upload's progress; XHR can. Only when someone is listening, and
191
+ // never when a `fetch` was injected (tests, non-browser runtimes).
192
+ if (options.onProgress !== undefined &&
193
+ this.options.fetch === undefined &&
194
+ typeof XMLHttpRequest !== 'undefined') {
195
+ return this.uploadWithProgress(file, options);
196
+ }
197
+ const formData = new FormData();
198
+ formData.append('file', file);
199
+ const response = await this.fetchImpl()(`${this.root()}/attachments`, {
200
+ method: 'POST',
201
+ headers: {
202
+ accept: 'application/json',
203
+ ...(await this.resolveHeaders()),
204
+ },
205
+ body: formData,
206
+ ...this.credentials(),
207
+ ...(options.signal !== undefined ? { signal: options.signal } : {}),
208
+ });
209
+ const attachment = await this.handleResponse(response, 'POST', `${this.agentPath()}/attachments`);
210
+ options.onProgress?.(1);
211
+ return attachment;
212
+ }
213
+ async uploadWithProgress(file, { signal, onProgress }) {
214
+ const headers = {
215
+ accept: 'application/json',
216
+ ...(await this.resolveHeaders()),
217
+ };
218
+ const url = `${this.root()}/attachments`;
219
+ return new Promise((resolve, reject) => {
220
+ const xhr = new XMLHttpRequest();
221
+ xhr.open('POST', url);
222
+ for (const [name, value] of Object.entries(headers))
223
+ xhr.setRequestHeader(name, value);
224
+ // Same-origin requests carry cookies regardless; this is the cross-origin opt-in.
225
+ xhr.withCredentials = this.options.credentials === 'include';
226
+ xhr.upload.onprogress = (event) => {
227
+ if (event.lengthComputable && event.total > 0)
228
+ onProgress?.(event.loaded / event.total);
229
+ };
230
+ xhr.onload = () => {
231
+ if (xhr.status < 200 || xhr.status >= 300) {
232
+ const error = new AgentHttpError(xhr.status, 'POST', `${this.agentPath()}/attachments`, xhr.statusText, readErrorAnswer(xhr.responseText));
233
+ reportHttpError(this.options.onHttpError, error);
234
+ reject(error);
235
+ return;
236
+ }
237
+ onProgress?.(1);
238
+ resolve(JSON.parse(xhr.responseText));
239
+ };
240
+ xhr.onerror = () => reject(new TypeError('Network error while uploading the attachment'));
241
+ xhr.onabort = () => reject(new DOMException('The upload was aborted', 'AbortError'));
242
+ if (signal !== undefined) {
243
+ if (signal.aborted) {
244
+ reject(new DOMException('The upload was aborted', 'AbortError'));
245
+ return;
246
+ }
247
+ signal.addEventListener('abort', () => xhr.abort(), { once: true });
248
+ }
249
+ const formData = new FormData();
250
+ formData.append('file', file);
251
+ xhr.send(formData);
252
+ });
253
+ }
254
+ promoteThread(id) {
255
+ return this.request('POST', `/threads/${encodeURIComponent(id)}/promote`);
256
+ }
257
+ truncateFromMessage(threadId, messageId) {
258
+ return this.request('DELETE', `/threads/${encodeURIComponent(threadId)}/from/${encodeURIComponent(messageId)}`);
259
+ }
260
+ /** `GET <path>/models?agent=` — the models this caller may pick, grouped by provider. */
261
+ listModels(agent) {
262
+ const query = agent === undefined ? '' : `?agent=${encodeURIComponent(agent)}`;
263
+ return this.request('GET', `/models${query}`);
264
+ }
265
+ /** `GET <path>/agents` — the registered agents, the default one flagged. */
266
+ listAgents() {
267
+ return this.request('GET', '/agents');
268
+ }
269
+ /** `GET <path>/config` — attachment limits and upload mode, and which features are on. */
270
+ getConfig() {
271
+ return this.request('GET', '/config');
272
+ }
273
+ /** `GET <path>/quota` — the caller's budget windows and the one blocking sends, if any. */
274
+ getQuota() {
275
+ return this.request('GET', '/quota');
276
+ }
277
+ cancelStream(runId) {
278
+ return this.request('POST', `/chat/${encodeURIComponent(runId)}/cancel`);
279
+ }
280
+ /**
281
+ * `remember` approves later calls of the same tool in the same thread; `via` names the surface
282
+ * the decision came through (the server records `'web'` when omitted).
283
+ */
284
+ async listActionProposals({ threadId }) {
285
+ const proposals = new Map();
286
+ let after;
287
+ for (;;) {
288
+ const route = `/threads/${encodeURIComponent(threadId)}/action-proposals${after === undefined ? '' : `?after=${encodeURIComponent(JSON.stringify(after))}`}`;
289
+ const response = await this.requestResponse('GET', route);
290
+ const page = await this.handleResponse(response, 'GET', `${this.agentPath()}${route}`);
291
+ if (!Array.isArray(page))
292
+ throw new TypeError('Invalid action proposal page');
293
+ for (const proposal of page)
294
+ proposals.set(proposal.id, proposal);
295
+ const header = response.headers.get('X-Action-Proposals-Next');
296
+ if (header === null)
297
+ return [...proposals.values()];
298
+ let next;
299
+ try {
300
+ next = JSON.parse(decodeURIComponent(header));
301
+ }
302
+ catch {
303
+ throw new TypeError('Invalid action proposal cursor');
304
+ }
305
+ if (typeof next !== 'object' ||
306
+ next === null ||
307
+ !('createdAt' in next) ||
308
+ typeof next.createdAt !== 'number' ||
309
+ !Number.isSafeInteger(next.createdAt) ||
310
+ !('id' in next) ||
311
+ typeof next.id !== 'string' ||
312
+ next.id.length === 0 ||
313
+ next.id.length > 255 ||
314
+ (after !== undefined &&
315
+ (next.createdAt < after.createdAt ||
316
+ (next.createdAt === after.createdAt && next.id <= after.id))))
317
+ throw new TypeError('Invalid or non-advancing action proposal cursor');
318
+ after = { createdAt: next.createdAt, id: next.id };
319
+ }
320
+ }
321
+ approveActionProposal({ threadId, proposalId, remember, }) {
322
+ return this.request('POST', `/threads/${encodeURIComponent(threadId)}/action-proposals/${encodeURIComponent(proposalId)}/approve`, remember === undefined ? {} : { remember });
323
+ }
324
+ rejectActionProposal({ threadId, proposalId, reason, }) {
325
+ return this.request('POST', `/threads/${encodeURIComponent(threadId)}/action-proposals/${encodeURIComponent(proposalId)}/reject`, reason === undefined ? {} : { reason });
326
+ }
327
+ approveToolCall(input) {
328
+ return this.request('POST', '/tool-call/approve', input);
329
+ }
330
+ rejectToolCall(input) {
331
+ return this.request('POST', '/tool-call/reject', input);
332
+ }
333
+ /**
334
+ * Settle a parked question set. `answers` is questionId → chosen option values; a question left
335
+ * out takes the pre-picked default the request carried, resolved server-side against the request
336
+ * the run already holds. Omit the whole object and the user has confirmed every pre-picked
337
+ * answer — which is the point of the surface, so it is a valid submission rather than a blank.
338
+ * `via` names the surface the answer came through (the server records `'web'` when omitted).
339
+ */
340
+ answerToolCall(input) {
341
+ return this.request('POST', '/tool-call/answer', input);
342
+ }
343
+ /**
344
+ * Decline to answer and let the agent proceed on its own pre-picked values. Lands on the same
345
+ * values a confirmation would, and persists differently on purpose — only one of them is
346
+ * evidence the user chose them.
347
+ */
348
+ skipToolCall(input) {
349
+ return this.request('POST', '/tool-call/skip', input);
350
+ }
351
+ fetchImpl() {
352
+ return this.options.fetch ?? globalThis.fetch;
353
+ }
354
+ /** This client's connection, for an {@link AttachmentUploadStrategy}. */
355
+ connection() {
356
+ return {
357
+ baseUrl: this.baseUrl(),
358
+ path: this.agentPath(),
359
+ headers: () => this.resolveHeaders(),
360
+ fetch: this.fetchImpl(),
361
+ ...this.credentials(),
362
+ ...(this.options.onHttpError !== undefined ? { onHttpError: this.options.onHttpError } : {}),
363
+ };
364
+ }
365
+ baseUrl() {
366
+ return (this.options.baseUrl ?? '').replace(/\/+$/, '');
367
+ }
368
+ agentPath() {
369
+ return normalizeAgentPath(this.options.path);
370
+ }
371
+ /** Origin + agent path: what every route hangs off. */
372
+ root() {
373
+ return `${this.baseUrl()}${this.agentPath()}`;
374
+ }
375
+ async resolveHeaders() {
376
+ const dynamic = (await this.options.getHeaders?.()) ?? {};
377
+ return { ...this.options.headers, ...dynamic };
378
+ }
379
+ credentials() {
380
+ return this.options.credentials !== undefined ? { credentials: this.options.credentials } : {};
381
+ }
382
+ async request(method, route, body) {
383
+ const response = await this.requestResponse(method, route, body);
384
+ return this.handleResponse(response, method, `${this.agentPath()}${route}`);
385
+ }
386
+ async requestResponse(method, route, body) {
387
+ const path = `${this.agentPath()}${route}`;
388
+ const response = await this.fetchImpl()(`${this.baseUrl()}${path}`, {
389
+ method,
390
+ headers: {
391
+ accept: 'application/json',
392
+ ...(body !== undefined ? { 'content-type': 'application/json' } : {}),
393
+ ...(await this.resolveHeaders()),
394
+ },
395
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
396
+ ...this.credentials(),
397
+ });
398
+ return response;
399
+ }
400
+ /** The error for a refused `response`, already reported to `onHttpError`. */
401
+ async failure(response, method, path) {
402
+ const error = await AgentHttpError.from(response, method, path);
403
+ reportHttpError(this.options.onHttpError, error);
404
+ return error;
405
+ }
406
+ async handleResponse(response, method, path) {
407
+ if (!response.ok) {
408
+ throw await this.failure(response, method, path);
409
+ }
410
+ if (response.status === 204)
411
+ return undefined;
412
+ const text = await response.text();
413
+ if (!text)
414
+ return undefined;
415
+ return JSON.parse(text);
416
+ }
417
+ }
418
+ function emptyStream() {
419
+ return new ReadableStream({
420
+ start(controller) {
421
+ controller.close();
422
+ },
423
+ });
424
+ }
425
+ function streamResponse(response) {
426
+ const body = response.body;
427
+ const runId = response.headers?.get(HEADER_RUN_ID) ?? undefined;
428
+ const threadId = response.headers?.get(HEADER_THREAD_ID) ?? undefined;
429
+ return {
430
+ body,
431
+ ...(runId ? { runId } : {}),
432
+ ...(threadId ? { threadId } : {}),
433
+ };
434
+ }
435
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/react/core/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type Context, type ReactNode } from 'react';
2
+ import type { TranscriptUiBlock } from '../transcript/model.js';
3
+ /** Draws a server-pushed component block. */
4
+ export type AmbientRenderUi = (block: TranscriptUiBlock) => ReactNode;
5
+ /**
6
+ * A context stored on `globalThis` under a registered symbol. Each entry point (`.`, `/genui`,
7
+ * `/genui/json-render`) is its own bundle with its own copy of every module, so a context one entry
8
+ * provides and another reads has to be found by key, not by module identity.
9
+ */
10
+ export declare function sharedContext<T>(key: string): Context<T | null>;
11
+ /**
12
+ * How pushed components are drawn when no `renderUi` is passed — set by `<GenuiProvider>` (the
13
+ * `/genui` subpath) and read by `MessageItem`.
14
+ */
15
+ export declare const AmbientRenderUiContext: Context<AmbientRenderUi | null>;
16
+ /**
17
+ * The renderer `<GenuiProvider>` installed for pushed components, or `null` outside one. For a
18
+ * custom transcript built on `useTranscriptItem`: draw a `ui` block with it and you get what
19
+ * `MessageItem` draws.
20
+ */
21
+ export declare function useAmbientRenderUi(): AmbientRenderUi | null;
22
+ //# sourceMappingURL=ambient-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambient-ui.d.ts","sourceRoot":"","sources":["../../../../../src/react/core/components/ambient-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAQ/D;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,OAAO,CAAC,eAAe,GAAG,IAAI,CACY,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D"}
@@ -0,0 +1,30 @@
1
+ import { createContext, useContext } from 'react';
2
+ /**
3
+ * A context stored on `globalThis` under a registered symbol. Each entry point (`.`, `/genui`,
4
+ * `/genui/json-render`) is its own bundle with its own copy of every module, so a context one entry
5
+ * provides and another reads has to be found by key, not by module identity.
6
+ */
7
+ export function sharedContext(key) {
8
+ const symbol = Symbol.for(key);
9
+ const holder = globalThis;
10
+ const existing = holder[symbol];
11
+ if (existing !== undefined)
12
+ return existing;
13
+ const created = createContext(null);
14
+ holder[symbol] = created;
15
+ return created;
16
+ }
17
+ /**
18
+ * How pushed components are drawn when no `renderUi` is passed — set by `<GenuiProvider>` (the
19
+ * `/genui` subpath) and read by `MessageItem`.
20
+ */
21
+ export const AmbientRenderUiContext = sharedContext('@adonis-agora/agent/react:ambient-render-ui');
22
+ /**
23
+ * The renderer `<GenuiProvider>` installed for pushed components, or `null` outside one. For a
24
+ * custom transcript built on `useTranscriptItem`: draw a `ui` block with it and you get what
25
+ * `MessageItem` draws.
26
+ */
27
+ export function useAmbientRenderUi() {
28
+ return useContext(AmbientRenderUiContext);
29
+ }
30
+ //# sourceMappingURL=ambient-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambient-ui.js","sourceRoot":"","sources":["../../../../../src/react/core/components/ambient-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAC;AAMhF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAI,GAAW;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,UAA2D,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAW,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,aAAa,CAAkB,6CAA6C,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ export interface ChatInputProps {
3
+ onSubmit: (text: string) => void;
4
+ disabled?: boolean;
5
+ placeholder?: string;
6
+ rows?: number;
7
+ /** Enable the dictation mic button (Web Speech API). Default `true`. */
8
+ enableSpeech?: boolean;
9
+ /** BCP-47 locale for dictation. Default `en-US`. */
10
+ speechLang?: string;
11
+ /** Label/content for the send button. Default `"Send"`. */
12
+ sendLabel?: React.ReactNode;
13
+ /**
14
+ * Cancel the turn in flight — wire to `useAgentChat`'s `cancel`. Rendered only alongside
15
+ * `isStreaming`, so the affordance exists exactly while there is something to cancel.
16
+ */
17
+ onStop?: () => void | Promise<void>;
18
+ /** Whether a turn is currently in flight. Gates the stop affordance. */
19
+ isStreaming?: boolean;
20
+ /** Label/content for the stop button. Default `"Stop generating"` — the mic's own is `"Stop"`. */
21
+ stopLabel?: React.ReactNode;
22
+ /** Wrapper class. The component ships no styles of its own. */
23
+ className?: string;
24
+ textareaClassName?: string;
25
+ sendButtonClassName?: string;
26
+ micButtonClassName?: string;
27
+ stopButtonClassName?: string;
28
+ /**
29
+ * Custom mic affordance. Receives `isListening`; return any node. When
30
+ * omitted a plain text button ("Speak" / "Stop") is rendered.
31
+ */
32
+ renderMic?: (state: {
33
+ isListening: boolean;
34
+ }) => React.ReactNode;
35
+ }
36
+ /**
37
+ * Styling-agnostic chat composer. Enter submits, Shift+Enter inserts a
38
+ * newline. Optional dictation streams interim transcripts into the draft
39
+ * and commits finalized chunks, and `onStop` surfaces the backend's
40
+ * cancel next to send. No design-system or icon-library deps —
41
+ * style it entirely through the `*ClassName` props.
42
+ */
43
+ export declare function ChatInput({ onSubmit, disabled, placeholder, rows, enableSpeech, speechLang, sendLabel, onStop, isStreaming, stopLabel, className, textareaClassName, sendButtonClassName, micButtonClassName, stopButtonClassName, renderMic, }: ChatInputProps): React.JSX.Element;
44
+ //# sourceMappingURL=chat-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input.d.ts","sourceRoot":"","sources":["../../../../../src/react/core/components/chat-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kGAAkG;IAClG,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CAClE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,IAAQ,EACR,YAAmB,EACnB,UAAoB,EACpB,SAAkB,EAClB,MAAM,EACN,WAAmB,EACnB,SAA6B,EAC7B,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,GACV,EAAE,cAAc,qBAqGhB"}
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { useSpeechRecognition } from './use-speech-recognition.js';
4
+ /**
5
+ * Styling-agnostic chat composer. Enter submits, Shift+Enter inserts a
6
+ * newline. Optional dictation streams interim transcripts into the draft
7
+ * and commits finalized chunks, and `onStop` surfaces the backend's
8
+ * cancel next to send. No design-system or icon-library deps —
9
+ * style it entirely through the `*ClassName` props.
10
+ */
11
+ export function ChatInput({ onSubmit, disabled, placeholder, rows = 2, enableSpeech = true, speechLang = 'en-US', sendLabel = 'Send', onStop, isStreaming = false, stopLabel = 'Stop generating', className, textareaClassName, sendButtonClassName, micButtonClassName, stopButtonClassName, renderMic, }) {
12
+ const [value, setValue] = useState('');
13
+ // Interim dictation transcript shown appended to the draft until the
14
+ // engine finalizes it — kept out of `value` so editing the rest of the
15
+ // text doesn't persist a partial guess.
16
+ const [interim, setInterim] = useState('');
17
+ const speech = useSpeechRecognition({
18
+ lang: speechLang,
19
+ onFinalTranscript: (text) => {
20
+ const trimmed = text.trim();
21
+ if (!trimmed)
22
+ return;
23
+ setValue((prev) => (prev.length === 0 ? trimmed : `${prev.trimEnd()} ${trimmed}`));
24
+ setInterim('');
25
+ },
26
+ onInterimTranscript: (text) => setInterim(text),
27
+ });
28
+ useEffect(() => {
29
+ if (!speech.isListening)
30
+ setInterim('');
31
+ }, [speech.isListening]);
32
+ function submit() {
33
+ const trimmed = value.trim();
34
+ if (!trimmed)
35
+ return;
36
+ onSubmit(trimmed);
37
+ setValue('');
38
+ setInterim('');
39
+ }
40
+ function handleKeyDown(event) {
41
+ if (event.key === 'Enter' && !event.shiftKey) {
42
+ event.preventDefault();
43
+ submit();
44
+ }
45
+ }
46
+ function toggleMic() {
47
+ if (speech.isListening)
48
+ speech.stop();
49
+ else
50
+ speech.start();
51
+ }
52
+ const displayValue = speech.isListening && interim
53
+ ? `${value}${value && !value.endsWith(' ') ? ' ' : ''}${interim}`
54
+ : value;
55
+ const showMic = enableSpeech && speech.isSupported;
56
+ const showStop = isStreaming && onStop !== undefined;
57
+ return (_jsxs("div", { className: className, children: [_jsx("textarea", { className: textareaClassName, rows: rows, value: displayValue, disabled: disabled, onChange: (event) => {
58
+ // Ignore changes while interim text is injected — the engine
59
+ // overwrites it on the next result. Editing works when idle.
60
+ if (speech.isListening && interim)
61
+ return;
62
+ setValue(event.target.value);
63
+ }, onKeyDown: handleKeyDown, placeholder: placeholder ?? 'Ask something (Enter to send, Shift+Enter for newline)' }), _jsx("button", { type: "button", className: sendButtonClassName, onClick: submit, disabled: disabled || !value.trim(), children: sendLabel }), showStop ? (_jsx("button", { type: "button", className: stopButtonClassName, onClick: () => void onStop(), "aria-label": "Stop generating", children: stopLabel })) : null, showMic ? (_jsx("button", { type: "button", className: micButtonClassName, onClick: toggleMic, disabled: disabled, "aria-label": speech.isListening ? 'Stop dictating' : 'Start dictating', children: renderMic
64
+ ? renderMic({ isListening: speech.isListening })
65
+ : speech.isListening
66
+ ? 'Stop'
67
+ : 'Speak' })) : null] }));
68
+ }
69
+ //# sourceMappingURL=chat-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../../../src/react/core/components/chat-input.tsx"],"names":[],"mappings":"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"}