@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/agent",
3
- "version": "0.61.0",
3
+ "version": "0.62.0",
4
4
  "description": "Governed, durable-backed AI agent (chat + tool-calling + governance) for AdonisJS — part of the Agora ecosystem.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,6 +23,7 @@
23
23
  "ai-sdk",
24
24
  "durable",
25
25
  "tanstack-intent",
26
+ "opencode",
26
27
  "agora",
27
28
  "guardrails"
28
29
  ],
@@ -41,6 +42,21 @@
41
42
  "import": "./dist/src/ai-sdk/index.js",
42
43
  "default": "./dist/src/ai-sdk/index.js"
43
44
  },
45
+ "./a2a": {
46
+ "types": "./dist/src/a2a/index.d.ts",
47
+ "import": "./dist/src/a2a/index.js",
48
+ "default": "./dist/src/a2a/index.js"
49
+ },
50
+ "./a2a_provider": {
51
+ "types": "./dist/providers/a2a_provider.d.ts",
52
+ "import": "./dist/providers/a2a_provider.js",
53
+ "default": "./dist/providers/a2a_provider.js"
54
+ },
55
+ "./a2a/server_middleware": {
56
+ "types": "./dist/src/a2a/server_middleware.d.ts",
57
+ "import": "./dist/src/a2a/server_middleware.js",
58
+ "default": "./dist/src/a2a/server_middleware.js"
59
+ },
44
60
  "./mcp": {
45
61
  "types": "./dist/src/mcp/index.d.ts",
46
62
  "import": "./dist/src/mcp/index.js",
@@ -76,6 +92,16 @@
76
92
  "import": "./dist/src/durable/index.js",
77
93
  "default": "./dist/src/durable/index.js"
78
94
  },
95
+ "./opencode": {
96
+ "types": "./dist/src/opencode/index.d.ts",
97
+ "import": "./dist/src/opencode/index.js",
98
+ "default": "./dist/src/opencode/index.js"
99
+ },
100
+ "./opencode/durable": {
101
+ "types": "./dist/src/opencode/durable/index.d.ts",
102
+ "import": "./dist/src/opencode/durable/index.js",
103
+ "default": "./dist/src/opencode/durable/index.js"
104
+ },
79
105
  "./authz": {
80
106
  "types": "./dist/src/authz/index.d.ts",
81
107
  "import": "./dist/src/authz/index.js",
@@ -180,6 +206,16 @@
180
206
  "types": "./dist/src/media/index.d.ts",
181
207
  "import": "./dist/src/media/index.js",
182
208
  "default": "./dist/src/media/index.js"
209
+ },
210
+ "./react/genui/server": {
211
+ "types": "./dist/src/react/genui/server.d.ts",
212
+ "import": "./dist/src/react/genui/server.js",
213
+ "default": "./dist/src/react/genui/server.js"
214
+ },
215
+ "./react/genui/server/playwright": {
216
+ "types": "./dist/src/react/genui/server_playwright.d.ts",
217
+ "import": "./dist/src/react/genui/server_playwright.js",
218
+ "default": "./dist/src/react/genui/server_playwright.js"
183
219
  }
184
220
  },
185
221
  "files": [
@@ -197,21 +233,34 @@
197
233
  "peerDependencies": {
198
234
  "@adonis-agora/authz": ">=0.4.2 <1.0.0",
199
235
  "@adonis-agora/diagnostics": ">=0.1.0 <1.0.0",
200
- "@adonis-agora/durable": ">=0.8.0 <1.0.0",
236
+ "@adonis-agora/durable": ">=0.43.3 <1.0.0",
201
237
  "@adonis-agora/media": ">=0.18.0 <1.0.0",
202
238
  "@adonis-agora/telescope": ">=0.4.0 <1.0.0",
203
239
  "@adonisjs/assembler": "^8.4.0",
204
240
  "@adonisjs/core": "^7.3.0",
205
241
  "@adonisjs/lucid": "^22.4.0",
206
242
  "@adonisjs/redis": "^9.2.0 || ^10.0.0 || ^11.0.0",
207
- "@dudousxd/nestjs-agent-core": ">=0.35.0 <1.0.0",
208
- "@dudousxd/nestjs-agent-react": ">=0.30.0 <1.0.0",
209
- "@dudousxd/nestjs-media-client": ">=0.3.0 <1.0.0",
210
243
  "@qdrant/js-client-rest": "^1.11.0",
211
244
  "ai": "^7.0.0",
212
245
  "node-sql-parser": "^5.3.0",
213
246
  "react": "^18.0.0 || ^19.0.0",
214
- "zod": "^4.0.0"
247
+ "zod": "^4.0.0",
248
+ "@ai-sdk/react": "^4.0.0",
249
+ "@json-render/react": ">=0.21.0 <1.0.0",
250
+ "@streamdown/code": "^1.1.1",
251
+ "@streamdown/math": "^1.0.2",
252
+ "@streamdown/mermaid": "^1.0.2",
253
+ "katex": "^0.16.45",
254
+ "prism-react-renderer": "^2.4.1",
255
+ "react-dom": ">=18",
256
+ "react-markdown": "^10.1.0",
257
+ "rehype-katex": "^7.0.1",
258
+ "rehype-sanitize": "^6.0.0",
259
+ "remark-gfm": "^4.0.1",
260
+ "remark-math": "^6.0.0",
261
+ "streamdown": "^2.5.0",
262
+ "unist-util-visit": "^5.1.0",
263
+ "playwright-core": ">=1.48 <2"
215
264
  },
216
265
  "peerDependenciesMeta": {
217
266
  "react": {
@@ -253,23 +302,62 @@
253
302
  "zod": {
254
303
  "optional": true
255
304
  },
256
- "@dudousxd/nestjs-agent-core": {
305
+ "@adonis-agora/media": {
257
306
  "optional": true
258
307
  },
259
- "@dudousxd/nestjs-agent-react": {
308
+ "@ai-sdk/react": {
260
309
  "optional": true
261
310
  },
262
- "@dudousxd/nestjs-media-client": {
311
+ "@json-render/react": {
263
312
  "optional": true
264
313
  },
265
- "@adonis-agora/media": {
314
+ "@streamdown/code": {
315
+ "optional": true
316
+ },
317
+ "@streamdown/math": {
318
+ "optional": true
319
+ },
320
+ "@streamdown/mermaid": {
321
+ "optional": true
322
+ },
323
+ "katex": {
324
+ "optional": true
325
+ },
326
+ "prism-react-renderer": {
327
+ "optional": true
328
+ },
329
+ "react-dom": {
330
+ "optional": true
331
+ },
332
+ "react-markdown": {
333
+ "optional": true
334
+ },
335
+ "rehype-katex": {
336
+ "optional": true
337
+ },
338
+ "rehype-sanitize": {
339
+ "optional": true
340
+ },
341
+ "remark-gfm": {
342
+ "optional": true
343
+ },
344
+ "remark-math": {
345
+ "optional": true
346
+ },
347
+ "streamdown": {
348
+ "optional": true
349
+ },
350
+ "unist-util-visit": {
351
+ "optional": true
352
+ },
353
+ "playwright-core": {
266
354
  "optional": true
267
355
  }
268
356
  },
269
357
  "devDependencies": {
270
- "@adonis-agora/authz": "0.16.1",
358
+ "@adonis-agora/authz": "0.18.0",
271
359
  "@adonis-agora/diagnostics": "0.2.10",
272
- "@adonis-agora/durable": "0.43.1",
360
+ "@adonis-agora/durable": "0.43.3",
273
361
  "@adonis-agora/telescope": "0.21.1",
274
362
  "@adonisjs/assembler": "8.5.2",
275
363
  "@adonisjs/core": "7.5.2",
@@ -278,37 +366,50 @@
278
366
  "@ag-ui/client": "1.0.1",
279
367
  "@ag-ui/core": "1.0.1",
280
368
  "@ai-sdk/react": "^4.0.125",
281
- "@dudousxd/nestjs-agent-core": "0.36.0",
282
- "@dudousxd/nestjs-agent-react": "0.31.0",
283
- "@dudousxd/nestjs-media-client": "0.3.0",
369
+ "@opencode/client": "2.0.18",
284
370
  "@qdrant/js-client-rest": "1.19.0",
285
- "@tanstack/intent": "0.4.0",
371
+ "@tanstack/intent": "0.5.0",
286
372
  "@testcontainers/mysql": "12.2.0",
287
373
  "@testcontainers/postgresql": "12.2.0",
288
374
  "@testing-library/dom": "10.4.2",
289
375
  "@testing-library/react": "16.3.3",
290
- "@types/node": "26.6.3",
376
+ "@types/node": "26.6.4",
291
377
  "@types/pg": "8.23.1",
292
378
  "@types/react": "19.3.0",
293
379
  "@types/react-dom": "19.3.0",
294
380
  "agent-0-56": "npm:@adonis-agora/agent@0.56.0",
295
381
  "agent-0-58": "npm:@adonis-agora/agent@0.58.0",
296
382
  "agent-0-59": "npm:@adonis-agora/agent@0.59.0",
297
- "ai": "7.0.102",
383
+ "ai": "7.0.122",
298
384
  "ajv": "^8.20.0",
299
385
  "better-sqlite3": "13.0.3",
300
386
  "jsdom": "30.1.1",
301
387
  "luxon": "3.7.2",
302
- "mysql2": "3.24.4",
388
+ "mysql2": "3.24.5",
303
389
  "node-sql-parser": "5.4.0",
304
- "pg": "8.23.0",
390
+ "pg": "8.23.1",
305
391
  "react": "19.3.0",
306
392
  "react-dom": "19.3.0",
307
393
  "rxjs": "^7.8.1",
308
394
  "testcontainers": "12.2.0",
309
395
  "typescript": "7.0.2",
310
- "vitest": "5.0.2",
311
- "zod": "4.6.5"
396
+ "vitest": "5.0.3",
397
+ "zod": "4.6.5",
398
+ "@json-render/core": "0.21.0",
399
+ "@json-render/react": "0.21.0",
400
+ "@streamdown/code": "1.1.1",
401
+ "@streamdown/math": "1.0.3",
402
+ "@streamdown/mermaid": "1.0.3",
403
+ "katex": "0.16.45",
404
+ "playwright-core": "^1.63.0",
405
+ "prism-react-renderer": "2.4.1",
406
+ "react-markdown": "10.1.0",
407
+ "rehype-katex": "7.0.1",
408
+ "rehype-sanitize": "6.0.0",
409
+ "remark-gfm": "4.0.1",
410
+ "remark-math": "6.0.0",
411
+ "streamdown": "2.6.0",
412
+ "unist-util-visit": "5.1.0"
312
413
  },
313
414
  "engines": {
314
415
  "node": ">=20.6.0"
@@ -74,12 +74,20 @@ export default defineConfig({
74
74
  })
75
75
  ```
76
76
 
77
- Because the offered-tools filter AND the invoke-time re-check call the same
78
- `can(actor, tool)`, swapping the policy changes both layers together — they can never
79
- disagree about what an actor may reach.
77
+ Because the offered-tools filter calls `canOffer(actor, tool)` when the policy defines
78
+ it (else `can`) and the invoke-time re-check always calls `can(actor, tool)`, swapping
79
+ the policy changes both layers together — they disagree only when a policy defines
80
+ `canOffer` to offer what it will not run (A2A step-up).
81
+
82
+ The provider wraps whatever policy you configure with `personalAgentGate`: an actor with
83
+ the `personal_agent` role (A2A personal agents) reaches only tools that declare one of its
84
+ roles — a tool with no `roles` is out of its reach even when open by default — and its
85
+ memory and skill scopes resolve to none. Nothing changes for any other actor.
80
86
 
81
87
  Source: `packages/adonis/docs/governance/authorization.mdx` ("Ability-aware
82
- authorization"), `packages/adonis/src/authorizer.ts`.
88
+ authorization"), `packages/adonis/src/authorizer.ts`,
89
+ `packages/adonis/src/a2a/gate.ts` (`personalAgentGate`, `personalAgentScopes`),
90
+ `packages/adonis/docs/a2a.mdx` ("What a personal agent can reach").
83
91
 
84
92
  ### Pattern 2 — mount the governance read-model with `governanceAuthorize`
85
93
 
@@ -175,7 +175,8 @@ delegatesTo: [{ agent: 'researcher', roles: ['ANALYST', 'ADMIN'] }]
175
175
 
176
176
  Mechanism: a delegate tool goes through the SAME gate as every other tool. A bare string
177
177
  carries nothing, so under `DefaultToolAuthorizer` it takes `defaultRoles` (open unless
178
- configured), and under the authz Bouncer adapter a spec without `ability` is denied
178
+ configured — except for A2A personal agents, which reach only tools that declare one of
179
+ their roles), and under the authz Bouncer adapter a spec without `ability` is denied
179
180
  outright — the edge becomes uncalled for everyone.
180
181
  Source: `packages/adonis/docs/authoring/personas-and-agents.mdx` ("Authorizing a
181
182
  delegation"), `packages/adonis/src/types.ts` (`DelegateEdge`).
@@ -26,9 +26,11 @@ sources:
26
26
  # Setting up @adonis-agora/agent
27
27
 
28
28
  `@adonis-agora/agent` is a governed AI agent module for AdonisJS: one `defineConfig`
29
- call in `config/agent.ts` wires a provider-agnostic agent loop, persistence, budgeting,
30
- and the `/agent/*` HTTP+SSE routes. Only `model` is required — everything else is a
31
- fail-closed default that this skill walks through.
29
+ call in `config/agent.ts` wires a provider-agnostic agent (the loop by default, or an
30
+ `engine` that runs turns instead), persistence, budgeting,
31
+ and the `/agent/*` HTTP+SSE routes. Either `model` (the loop runs the turns) or
32
+ `engine` (something else does) is required — everything else ships with a default that
33
+ this skill walks through.
32
34
 
33
35
  ## Setup
34
36
 
@@ -42,8 +44,9 @@ node ace configure @adonis-agora/agent
42
44
  `configure` registers `@adonis-agora/agent/agent_provider` and
43
45
  `@adonis-agora/agent/dashboard_provider` in `adonisrc.ts`, registers the Assembler init
44
46
  hook that generates the typed `app/agent_tools` barrel, publishes `config/agent.ts`,
45
- `config/mcp.ts`, and two migrations (the agent tables; a Postgres-only pgvector RAG chunk
46
- table you can delete). Then add the model peer and write your config:
47
+ `config/mcp.ts`, and five migrations: three for the agent tables (the base tables plus two
48
+ forward-only action-proposal upgrades) and two Postgres-only ones (the pgvector RAG chunk
49
+ table and the document-tree tables — delete the ones you don't use). Then add the model peer and write your config:
47
50
 
48
51
  ```bash
49
52
  pnpm add ai zod @ai-sdk/openai
@@ -75,9 +78,10 @@ export default defineConfig({
75
78
  })
76
79
  ```
77
80
 
78
- Run the migration for the six agent tables (`agent_thread`, `agent_message`,
79
- `agent_tool_call`, `agent_token_usage`, `agent_model_pricing`, plus the run-lifecycle
80
- columns):
81
+ Run the published migrations for the ten agent tables (`agent_action_proposal`,
82
+ `agent_thread`, `agent_message`, `agent_tool_call`, `agent_token_usage`,
83
+ `agent_model_pricing`, `agent_run`, `agent_queued_message`, `agent_confirm_token`, plus the
84
+ `agent_stream_frame` buffer):
81
85
 
82
86
  ```bash
83
87
  node ace migration:run
@@ -85,8 +89,8 @@ node ace migration:run
85
89
 
86
90
  You can skip it: the Lucid store provisions and repairs its own tables as the app starts
87
91
  (`autoCreateTables` defaults to true; an ace command or a hand-built store does it on first
88
- use), so an upgrade that adds a column needs no app migration. The published migration
89
- delegates to the same `createAgentTables` helper, so the two schemas can never drift.
92
+ use), so an upgrade that adds a column needs no app migration. The published migrations
93
+ delegate to the same `createAgentTables` helper, so the two schemas can never drift.
90
94
  Only with `autoCreateTables: false` does an upgrade need a migration that calls
91
95
  `createAgentTables` again.
92
96
 
@@ -179,6 +183,7 @@ export default defineConfig({
179
183
 
180
184
  Requires `@adonisjs/redis` installed and configured unless you pass `client:` (a
181
185
  bring-your-own `RedisStreamClient`). Pair with `durable: true` for cross-instance resume.
186
+ Under an `engine`, `durable: true` is refused at boot unless the engine is durable itself.
182
187
 
183
188
  No Redis? `tokenSinks.lucid()` keeps the frames in the app's SQL database instead
184
189
  (table `agent_stream_frame`, created with the other agent tables). Subscribers poll
@@ -206,9 +211,9 @@ Source: `packages/adonis/src/stores/factory.ts` (`tokenSinks`),
206
211
 
207
212
  ### Pattern 4 — a React chat with `@adonis-agora/agent/react`
208
213
 
209
- The React layer is `@dudousxd/nestjs-agent-react` re-exported (an optional peer — install it with
210
- `@ai-sdk/react` and `ai`), plus an `AgentProvider` that already sends the session cookie and
211
- shield's CSRF token. No controller, no fetch code:
214
+ Agora owns the React layer inside `@adonis-agora/agent/react`. Install the optional
215
+ `react`, `@ai-sdk/react` and `ai` peers for this entry. `AgentProvider` already sends the
216
+ session cookie and shield's CSRF token. No Aviary package or release is required:
212
217
 
213
218
  ```tsx
214
219
  import { AgentProvider, useAgentChat } from '@adonis-agora/agent/react'
@@ -260,6 +265,24 @@ token sink any replica serves the resume. The native stream is unchanged.
260
265
 
261
266
  Source: `packages/adonis/docs/ag-ui.mdx`, `packages/adonis/src/ag-ui/`.
262
267
 
268
+ ## Component rendering entries
269
+
270
+ Agora owns its catalog (`@adonis-agora/agent/genui`), browser rendering
271
+ (`@adonis-agora/agent/react/genui`), AG-UI adapters and resumable upload client
272
+ (`@adonis-agora/agent/react/media`). Protocol compatibility does not require installing
273
+ Aviary packages.
274
+
275
+ For static HTML, use `createReactComponentRegistry` and `createReactServerRenderer` from
276
+ `@adonis-agora/agent/react/genui/server`; install matching `react` and `react-dom` peers.
277
+ Keep this server entry out of browser bundles: it reads trusted filesystem stylesheets
278
+ and imports ReactDOM's server renderer. HTML does not require a browser or AI SDK.
279
+ PNG/PDF output takes a capture adapter; the optional Playwright implementation lives at
280
+ `@adonis-agora/agent/react/genui/server/playwright` and needs `playwright-core`. A supplied
281
+ browser remains caller-owned. Binary captures are attachments, not durable UI-frame props.
282
+
283
+ Source: `packages/adonis/docs/authoring/component-rendering.mdx`,
284
+ `packages/adonis/docs/react.mdx`.
285
+
263
286
  ## Common mistakes
264
287
 
265
288
  ### MEDIUM — restating history to the AG-UI route and expecting it to be read
@@ -167,6 +167,28 @@ for await (const frame of sink.subscribe(runId)) {
167
167
  Source: `packages/adonis/docs/testing.mdx` ("Because the fakes are behavioral twins"
168
168
  note), `packages/adonis/src/in-process-sink.ts`.
169
169
 
170
+ ### Pattern 4 — verify presentation, replay and optional rendering locally
171
+
172
+ Use Agora's own entries in tests; do not install or alias Aviary packages. Exercise
173
+ class presentation through discovery, and functional presentation through `defineTool`
174
+ and `ToolRegistry.invoke`. Verify unchanged domain output, authorization and denied
175
+ preflight, completed preflight without execution, ordered emissions, and a throwing
176
+ `present`/sink/reporter without repeating the domain write. A loop test should replay
177
+ its journaled tool result and assert that presentation is not emitted or persisted twice.
178
+
179
+ Test custom schema transformations with distinct `props` and `outputProps` through
180
+ static and request-resolved component/show/tree tools; normalized props must remain
181
+ unchanged in rendering and persisted history. For SSR, import
182
+ `@adonis-agora/agent/react/genui/server`, provide trusted CSS/theme, and use a fake capture
183
+ adapter to inspect every paginated row and escaped HTML without a browser. Real
184
+ PNG/PDF tests can use the optional Playwright entry and a host Chromium executable;
185
+ assert byte signatures and page/context cleanup while retaining the supplied browser.
186
+ Keep binary captures out of persisted component frames.
187
+
188
+ Source: `packages/adonis/test/tool-present.spec.ts`,
189
+ `packages/adonis/test/emit-ui.spec.ts`, `packages/adonis/test/react-server.spec.ts`,
190
+ `packages/adonis/test/react-playwright.browser.spec.ts`.
191
+
170
192
  ## Common mistakes
171
193
 
172
194
  ### MEDIUM — keeping mutable state in a FakeModelProvider script
@@ -59,7 +59,8 @@ export default class GetWeather extends ReadTool<Input, { tempC: number }> {
59
59
  }
60
60
  ```
61
61
 
62
- Prefer a function? `defineTool(options, execute)` returns a branded `{ spec, handler }`
62
+ Prefer a function? `defineTool({ name, input, execute, present, ... })` or the existing
63
+ `defineTool(options, execute)` returns a branded `{ spec, handler }`
63
64
  discovery picks up identically — or pass it straight to `defineConfig({ tools: [...] })`.
64
65
 
65
66
  ## Core patterns
@@ -109,8 +110,9 @@ An action's write and the checkpoint that records it are two writes: a worker th
109
110
  them re-runs the tool on recovery. Pass `ctx.idempotencyKey` (`<runId>:<toolCallId>`, the same for
110
111
  every execution of one call) on as the downstream idempotency key — a provider's
111
112
  `Idempotency-Key`, a unique column on the inserted row, the `id` of a workflow the tool starts — so
112
- the second attempt lands on the first. It is absent outside a turn (MCP, a direct
113
- `registry.invoke`), so fall back to a key of your own there.
113
+ the second attempt lands on the first. Over MCP the server mints one per `tools/call`
114
+ (alongside `toolCallId` and `pageContext: { channel: 'mcp' }`). It is absent on a direct
115
+ `registry.invoke`, so fall back to a key of your own there.
114
116
 
115
117
  Source: `packages/adonis/src/spi/tool.ts` (`AiToolCtx.idempotencyKey`).
116
118
 
@@ -177,10 +179,12 @@ Source: `packages/adonis/docs/authoring/tools.mdx` ("Configuring the generator")
177
179
 
178
180
  ### Pattern 4 — a write reachable over MCP: `defineConfirmedTool`
179
181
 
180
- An `action` never reaches an MCP client (no approval channel, and Claude.ai/Desktop have no
182
+ An `action` is off the MCP surface by default (`actions: 'refuse'` in `config/mcp.ts` —
183
+ neither listed nor callable, since there is no approval channel, and Claude.ai/Desktop have no
181
184
  elicitation). For a write that must be callable there, put the gate inside the tool: the
182
185
  first call previews and returns a signed `confirmToken`; the same arguments plus
183
- `confirm: true` and the token commit.
186
+ `confirm: true` and the token commit. (`actions: 'execute'` opts out and runs actions when
187
+ called — the MCP client's own confirmation stands in for the loop's approval gate.)
184
188
 
185
189
  ```ts
186
190
  import { defineConfirmedTool, LucidConfirmTokenStore } from '@adonis-agora/agent'
@@ -209,6 +213,44 @@ arguments and expires (`ttlMs`, default 15 min).
209
213
  Source: `packages/adonis/docs/mcp.mdx` ("Writes with a human gate"),
210
214
  `packages/adonis/src/confirmed-tool.ts`.
211
215
 
216
+ ### Pattern 5 — present a domain result through the component catalog
217
+
218
+ Keep `execute` returning domain data. An optional `present(output, ctx)` on a class or
219
+ functional handler returns one component presentation, an array, or `undefined`. The
220
+ registry emits presentations through `ctx.emitUi` and preserves the domain result for
221
+ REST/MCP callers. Denied or failed execution does not present; presentation errors do
222
+ not retry a successful write. Methods keep their receiver, including injected services.
223
+
224
+ ```ts
225
+ import { defineTool } from '@adonis-agora/agent'
226
+ import { table } from '@adonis-agora/agent/genui'
227
+ import { z } from 'zod'
228
+
229
+ export const listRecords = defineTool({
230
+ name: 'list_records',
231
+ description: 'List records visible to the current actor.',
232
+ input: z.object({ limit: z.number().int().min(1).max(100) }),
233
+ execute: async ({ limit }, ctx) => recordsFor(ctx.actor, limit),
234
+ present: async (records) => table({
235
+ columns: [{ key: 'name', label: 'Name' }],
236
+ rows: records,
237
+ }),
238
+ })
239
+ ```
240
+
241
+ Use `createComponent` for custom definitions and one `createComponentRegistry` per app
242
+ or tenant. Input `props` may transform; if the transform changes shape or is not
243
+ idempotent, declare `outputProps` to validate the normalized JSON persisted in frames.
244
+ Do not send renderer functions or image/PDF bytes as props. Set `onPresentationError(error,
245
+ { toolName, toolCallId, runId, threadId })` in `defineConfig` — it is wired for turns
246
+ and proposal executions (the loop/executor fill in the call, run and thread); omit it
247
+ and the provider logs a warning on the app logger. Inside a tool,
248
+ `ctx.onPresentationError` carries the same details. SSR and capture use optional server entries,
249
+ separate from tool execution and browser chat hooks.
250
+
251
+ Source: `packages/adonis/docs/authoring/component-rendering.mdx`,
252
+ `packages/adonis/src/spi/tool.ts`, `packages/adonis/src/tool-result-presentation.ts`.
253
+
212
254
  ## Feature flags and per-user gates — `enabled`, `isEnabled()`, `canUse(actor)`
213
255
 
214
256
  ```ts
@@ -232,8 +274,8 @@ Source: `packages/adonis/docs/authoring/tools.mdx`, `packages/adonis/src/tool-fi
232
274
  ### CRITICAL — shipping a privileged tool without `roles`
233
275
 
234
276
  ```ts
235
- // Wrong — no roles → inherits defaultRoles, which is [] (open) by default: every actor,
236
- // an anonymous visitor included, is offered this tool.
277
+ // Wrong — no roles → inherits defaultRoles, which is [] (open) by default: every actor
278
+ // except A2A personal agents, an anonymous visitor included, is offered this tool.
237
279
  static tool = { name: 'refund_order', kind: 'action', description: '...', input }
238
280
  ```
239
281
 
@@ -245,10 +287,13 @@ static tool = { name: 'refund_order', kind: 'action', description: '...', input,
245
287
  Mechanism: `definitionsFor` filters the offered tool list through the role gate BEFORE
246
288
  each model turn, and `invoke` re-checks it. A tool with no `roles` takes `defaultRoles`;
247
289
  an empty list is no restriction (since 0.46 — before, it denied everyone; `emptyRoles: 'deny'`
248
- in the config, or `ClosedRolesPolicy`, keeps it closed). An `action` still parks on approval — but by default the
290
+ in the config, or `ClosedRolesPolicy`, keeps it closed) — except for an actor with the
291
+ `personal_agent` role (A2A personal agents): it reaches only tools that declare one of its
292
+ roles, so a tool with no `roles` is out of its reach even when open by default. An `action` still parks on approval — but by default the
249
293
  requester approves, so for a public chat that is only a confirmation.
250
294
  Source: `packages/adonis/docs/governance/authorization.mdx`,
251
- `packages/adonis/src/tool-registry.ts` (`DefaultRolesPolicy.can`).
295
+ `packages/adonis/src/tool-registry.ts` (`DefaultRolesPolicy.can`),
296
+ `packages/adonis/src/a2a/gate.ts` (`personalAgentGate`).
252
297
 
253
298
  ### HIGH — trusting an id from the model's arguments instead of `ctx.actor`
254
299
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-decision.d.ts","sourceRoot":"","sources":["../../../src/ag-ui/proposal-decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE3F,qGAAqG;AACrG,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,SAAS,EAAE,CAmBd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-decision.js","sourceRoot":"","sources":["../../../src/ag-ui/proposal-decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAkB,MAAM,mCAAmC,CAAC;AAE3F,qGAAqG;AACrG,MAAM,UAAU,4BAA4B,CAAC,KAK5C;IACC,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,KAAK,oBAAoB,CAAC;IACrD,OAAO;QACL;YACE,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,sBAAsB;SACxC;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,iCAAiC;YACvC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE;SAC9E;QACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;QAC5D,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;QAC9D,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;KACvE,CAAC;AACJ,CAAC"}