@adonis-agora/agent 0.61.0 → 0.63.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 (664) hide show
  1. package/CHANGELOG.md +91 -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 +81 -25
  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 +7 -2
  67. package/dist/src/action-proposal-service.d.ts.map +1 -1
  68. package/dist/src/action-proposal-service.js +21 -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/actor-resolver.d.ts +12 -4
  79. package/dist/src/actor-resolver.d.ts.map +1 -1
  80. package/dist/src/actor-resolver.js +24 -7
  81. package/dist/src/actor-resolver.js.map +1 -1
  82. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  83. package/dist/src/ag-ui/adapter.js +115 -17
  84. package/dist/src/ag-ui/adapter.js.map +1 -1
  85. package/dist/src/ag-ui/core/encoder.d.ts +106 -0
  86. package/dist/src/ag-ui/core/encoder.d.ts.map +1 -0
  87. package/dist/src/ag-ui/core/encoder.js +534 -0
  88. package/dist/src/ag-ui/core/encoder.js.map +1 -0
  89. package/dist/src/ag-ui/core/index.d.ts +12 -0
  90. package/dist/src/ag-ui/core/index.d.ts.map +1 -0
  91. package/dist/src/ag-ui/core/index.js +12 -0
  92. package/dist/src/ag-ui/core/index.js.map +1 -0
  93. package/dist/src/ag-ui/core/input.d.ts +92 -0
  94. package/dist/src/ag-ui/core/input.d.ts.map +1 -0
  95. package/dist/src/ag-ui/core/input.js +246 -0
  96. package/dist/src/ag-ui/core/input.js.map +1 -0
  97. package/dist/src/ag-ui/core/interrupt-id.d.ts +31 -0
  98. package/dist/src/ag-ui/core/interrupt-id.d.ts.map +1 -0
  99. package/dist/src/ag-ui/core/interrupt-id.js +48 -0
  100. package/dist/src/ag-ui/core/interrupt-id.js.map +1 -0
  101. package/dist/src/ag-ui/{proposal-decision.d.ts → core/proposal-decision.d.ts} +1 -1
  102. package/dist/src/ag-ui/core/proposal-decision.d.ts.map +1 -0
  103. package/dist/src/ag-ui/{proposal-decision.js → core/proposal-decision.js} +3 -6
  104. package/dist/src/ag-ui/core/proposal-decision.js.map +1 -0
  105. package/dist/src/ag-ui/core/stream.d.ts +49 -0
  106. package/dist/src/ag-ui/core/stream.d.ts.map +1 -0
  107. package/dist/src/ag-ui/core/stream.js +90 -0
  108. package/dist/src/ag-ui/core/stream.js.map +1 -0
  109. package/dist/src/ag-ui/core/types.d.ts +249 -0
  110. package/dist/src/ag-ui/core/types.d.ts.map +1 -0
  111. package/dist/src/ag-ui/core/types.js +35 -0
  112. package/dist/src/ag-ui/core/types.js.map +1 -0
  113. package/dist/src/ag-ui/encoder.d.ts +3 -4
  114. package/dist/src/ag-ui/encoder.d.ts.map +1 -1
  115. package/dist/src/ag-ui/encoder.js +10 -11
  116. package/dist/src/ag-ui/encoder.js.map +1 -1
  117. package/dist/src/ag-ui/frames.d.ts +8 -5
  118. package/dist/src/ag-ui/frames.d.ts.map +1 -1
  119. package/dist/src/ag-ui/frames.js +21 -7
  120. package/dist/src/ag-ui/frames.js.map +1 -1
  121. package/dist/src/ag-ui/index.d.ts +3 -5
  122. package/dist/src/ag-ui/index.d.ts.map +1 -1
  123. package/dist/src/ag-ui/index.js +3 -5
  124. package/dist/src/ag-ui/index.js.map +1 -1
  125. package/dist/src/ag-ui/stream.d.ts +3 -4
  126. package/dist/src/ag-ui/stream.d.ts.map +1 -1
  127. package/dist/src/ag-ui/stream.js +4 -5
  128. package/dist/src/ag-ui/stream.js.map +1 -1
  129. package/dist/src/agent-deps-factory.d.ts +3 -0
  130. package/dist/src/agent-deps-factory.d.ts.map +1 -1
  131. package/dist/src/agent-deps-factory.js +3 -0
  132. package/dist/src/agent-deps-factory.js.map +1 -1
  133. package/dist/src/agent-deps.d.ts +3 -0
  134. package/dist/src/agent-deps.d.ts.map +1 -1
  135. package/dist/src/agent-deps.js.map +1 -1
  136. package/dist/src/agent-loop.d.ts +4 -3
  137. package/dist/src/agent-loop.d.ts.map +1 -1
  138. package/dist/src/agent-loop.js +50 -25
  139. package/dist/src/agent-loop.js.map +1 -1
  140. package/dist/src/agent-service.d.ts +46 -4
  141. package/dist/src/agent-service.d.ts.map +1 -1
  142. package/dist/src/agent-service.js +87 -11
  143. package/dist/src/agent-service.js.map +1 -1
  144. package/dist/src/ai-sdk/ai-sdk-model.js +4 -1
  145. package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
  146. package/dist/src/ai-tool-ref.d.ts +4 -0
  147. package/dist/src/ai-tool-ref.d.ts.map +1 -1
  148. package/dist/src/ai-tool-ref.js +10 -14
  149. package/dist/src/ai-tool-ref.js.map +1 -1
  150. package/dist/src/attachment-limits.d.ts +10 -0
  151. package/dist/src/attachment-limits.d.ts.map +1 -0
  152. package/dist/src/attachment-limits.js +13 -0
  153. package/dist/src/attachment-limits.js.map +1 -0
  154. package/dist/src/channels/adapters/evolution_api.d.ts +49 -0
  155. package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -0
  156. package/dist/src/channels/adapters/evolution_api.js +241 -0
  157. package/dist/src/channels/adapters/evolution_api.js.map +1 -0
  158. package/dist/src/channels/adapters/telegram.d.ts +34 -0
  159. package/dist/src/channels/adapters/telegram.d.ts.map +1 -0
  160. package/dist/src/channels/adapters/telegram.js +196 -0
  161. package/dist/src/channels/adapters/telegram.js.map +1 -0
  162. package/dist/src/channels/adapters/whatsapp_cloud.d.ts +31 -0
  163. package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -0
  164. package/dist/src/channels/adapters/whatsapp_cloud.js +177 -0
  165. package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -0
  166. package/dist/src/channels/handler.d.ts +167 -0
  167. package/dist/src/channels/handler.d.ts.map +1 -0
  168. package/dist/src/channels/handler.js +569 -0
  169. package/dist/src/channels/handler.js.map +1 -0
  170. package/dist/src/channels/http.d.ts +45 -0
  171. package/dist/src/channels/http.d.ts.map +1 -0
  172. package/dist/src/channels/http.js +147 -0
  173. package/dist/src/channels/http.js.map +1 -0
  174. package/dist/src/channels/index.d.ts +16 -0
  175. package/dist/src/channels/index.d.ts.map +1 -0
  176. package/dist/src/channels/index.js +15 -0
  177. package/dist/src/channels/index.js.map +1 -0
  178. package/dist/src/channels/markdown.d.ts +12 -0
  179. package/dist/src/channels/markdown.d.ts.map +1 -0
  180. package/dist/src/channels/markdown.js +120 -0
  181. package/dist/src/channels/markdown.js.map +1 -0
  182. package/dist/src/channels/questions.d.ts +43 -0
  183. package/dist/src/channels/questions.d.ts.map +1 -0
  184. package/dist/src/channels/questions.js +90 -0
  185. package/dist/src/channels/questions.js.map +1 -0
  186. package/dist/src/channels/split.d.ts +8 -0
  187. package/dist/src/channels/split.d.ts.map +1 -0
  188. package/dist/src/channels/split.js +45 -0
  189. package/dist/src/channels/split.js.map +1 -0
  190. package/dist/src/channels/store.d.ts +78 -0
  191. package/dist/src/channels/store.d.ts.map +1 -0
  192. package/dist/src/channels/store.js +151 -0
  193. package/dist/src/channels/store.js.map +1 -0
  194. package/dist/src/channels/types.d.ts +138 -0
  195. package/dist/src/channels/types.d.ts.map +1 -0
  196. package/dist/src/channels/types.js +7 -0
  197. package/dist/src/channels/types.js.map +1 -0
  198. package/dist/src/chat-queue-service.d.ts.map +1 -1
  199. package/dist/src/chat-queue-service.js +2 -0
  200. package/dist/src/chat-queue-service.js.map +1 -1
  201. package/dist/src/define_config.d.ts +61 -12
  202. package/dist/src/define_config.d.ts.map +1 -1
  203. package/dist/src/define_config.js.map +1 -1
  204. package/dist/src/engine.d.ts +77 -0
  205. package/dist/src/engine.d.ts.map +1 -0
  206. package/dist/src/engine.js +27 -0
  207. package/dist/src/engine.js.map +1 -0
  208. package/dist/src/genui/builtins.d.ts +73 -3
  209. package/dist/src/genui/builtins.d.ts.map +1 -1
  210. package/dist/src/genui/builtins.js +357 -3
  211. package/dist/src/genui/builtins.js.map +1 -1
  212. package/dist/src/genui/capabilities.d.ts +24 -0
  213. package/dist/src/genui/capabilities.d.ts.map +1 -0
  214. package/dist/src/genui/capabilities.js +81 -0
  215. package/dist/src/genui/capabilities.js.map +1 -0
  216. package/dist/src/genui/catalog.d.ts +86 -0
  217. package/dist/src/genui/catalog.d.ts.map +1 -0
  218. package/dist/src/genui/catalog.js +96 -0
  219. package/dist/src/genui/catalog.js.map +1 -0
  220. package/dist/src/genui/factory.d.ts +7 -14
  221. package/dist/src/genui/factory.d.ts.map +1 -1
  222. package/dist/src/genui/factory.js.map +1 -1
  223. package/dist/src/genui/index.d.ts +4 -12
  224. package/dist/src/genui/index.d.ts.map +1 -1
  225. package/dist/src/genui/index.js +5 -18
  226. package/dist/src/genui/index.js.map +1 -1
  227. package/dist/src/genui/public.d.ts +9 -0
  228. package/dist/src/genui/public.d.ts.map +1 -0
  229. package/dist/src/genui/public.js +9 -0
  230. package/dist/src/genui/public.js.map +1 -0
  231. package/dist/src/genui/registry.d.ts +65 -0
  232. package/dist/src/genui/registry.d.ts.map +1 -0
  233. package/dist/src/genui/registry.js +151 -0
  234. package/dist/src/genui/registry.js.map +1 -0
  235. package/dist/src/genui/schema.d.ts +71 -0
  236. package/dist/src/genui/schema.d.ts.map +1 -0
  237. package/dist/src/genui/schema.js +304 -0
  238. package/dist/src/genui/schema.js.map +1 -0
  239. package/dist/src/genui/text.d.ts +36 -0
  240. package/dist/src/genui/text.d.ts.map +1 -0
  241. package/dist/src/genui/text.js +157 -0
  242. package/dist/src/genui/text.js.map +1 -0
  243. package/dist/src/genui/tools.d.ts +92 -0
  244. package/dist/src/genui/tools.d.ts.map +1 -0
  245. package/dist/src/genui/tools.js +291 -0
  246. package/dist/src/genui/tools.js.map +1 -0
  247. package/dist/src/genui/tree.d.ts +56 -0
  248. package/dist/src/genui/tree.d.ts.map +1 -0
  249. package/dist/src/genui/tree.js +188 -0
  250. package/dist/src/genui/tree.js.map +1 -0
  251. package/dist/src/index.d.ts +6 -3
  252. package/dist/src/index.d.ts.map +1 -1
  253. package/dist/src/index.js +4 -2
  254. package/dist/src/index.js.map +1 -1
  255. package/dist/src/mcp/auth.d.ts +17 -1
  256. package/dist/src/mcp/auth.d.ts.map +1 -1
  257. package/dist/src/mcp/auth.js +14 -3
  258. package/dist/src/mcp/auth.js.map +1 -1
  259. package/dist/src/mcp/define_config.d.ts +81 -2
  260. package/dist/src/mcp/define_config.d.ts.map +1 -1
  261. package/dist/src/mcp/define_config.js.map +1 -1
  262. package/dist/src/mcp/index.d.ts +1 -1
  263. package/dist/src/mcp/index.d.ts.map +1 -1
  264. package/dist/src/mcp/index.js.map +1 -1
  265. package/dist/src/mcp/oauth-resource.d.ts +9 -0
  266. package/dist/src/mcp/oauth-resource.d.ts.map +1 -0
  267. package/dist/src/mcp/oauth-resource.js +16 -0
  268. package/dist/src/mcp/oauth-resource.js.map +1 -0
  269. package/dist/src/mcp/server.d.ts +5 -0
  270. package/dist/src/mcp/server.d.ts.map +1 -1
  271. package/dist/src/mcp/server.js +48 -16
  272. package/dist/src/mcp/server.js.map +1 -1
  273. package/dist/src/negotiated-tool-ui.d.ts.map +1 -1
  274. package/dist/src/negotiated-tool-ui.js +12 -8
  275. package/dist/src/negotiated-tool-ui.js.map +1 -1
  276. package/dist/src/opencode/client.d.ts +202 -0
  277. package/dist/src/opencode/client.d.ts.map +1 -0
  278. package/dist/src/opencode/client.js +2 -0
  279. package/dist/src/opencode/client.js.map +1 -0
  280. package/dist/src/opencode/durable/index.d.ts +33 -0
  281. package/dist/src/opencode/durable/index.d.ts.map +1 -0
  282. package/dist/src/opencode/durable/index.js +38 -0
  283. package/dist/src/opencode/durable/index.js.map +1 -0
  284. package/dist/src/opencode/durable/runner.d.ts +36 -0
  285. package/dist/src/opencode/durable/runner.d.ts.map +1 -0
  286. package/dist/src/opencode/durable/runner.js +88 -0
  287. package/dist/src/opencode/durable/runner.js.map +1 -0
  288. package/dist/src/opencode/durable/workflow.d.ts +40 -0
  289. package/dist/src/opencode/durable/workflow.d.ts.map +1 -0
  290. package/dist/src/opencode/durable/workflow.js +106 -0
  291. package/dist/src/opencode/durable/workflow.js.map +1 -0
  292. package/dist/src/opencode/engine.d.ts +48 -0
  293. package/dist/src/opencode/engine.d.ts.map +1 -0
  294. package/dist/src/opencode/engine.js +98 -0
  295. package/dist/src/opencode/engine.js.map +1 -0
  296. package/dist/src/opencode/event-hub.d.ts +23 -0
  297. package/dist/src/opencode/event-hub.d.ts.map +1 -0
  298. package/dist/src/opencode/event-hub.js +99 -0
  299. package/dist/src/opencode/event-hub.js.map +1 -0
  300. package/dist/src/opencode/forms.d.ts +19 -0
  301. package/dist/src/opencode/forms.d.ts.map +1 -0
  302. package/dist/src/opencode/forms.js +82 -0
  303. package/dist/src/opencode/forms.js.map +1 -0
  304. package/dist/src/opencode/host.d.ts +179 -0
  305. package/dist/src/opencode/host.d.ts.map +1 -0
  306. package/dist/src/opencode/host.js +34 -0
  307. package/dist/src/opencode/host.js.map +1 -0
  308. package/dist/src/opencode/index.d.ts +15 -0
  309. package/dist/src/opencode/index.d.ts.map +1 -0
  310. package/dist/src/opencode/index.js +9 -0
  311. package/dist/src/opencode/index.js.map +1 -0
  312. package/dist/src/opencode/log.d.ts +9 -0
  313. package/dist/src/opencode/log.d.ts.map +1 -0
  314. package/dist/src/opencode/log.js +15 -0
  315. package/dist/src/opencode/log.js.map +1 -0
  316. package/dist/src/opencode/mcp.d.ts +60 -0
  317. package/dist/src/opencode/mcp.d.ts.map +1 -0
  318. package/dist/src/opencode/mcp.js +258 -0
  319. package/dist/src/opencode/mcp.js.map +1 -0
  320. package/dist/src/opencode/runner.d.ts +40 -0
  321. package/dist/src/opencode/runner.d.ts.map +1 -0
  322. package/dist/src/opencode/runner.js +125 -0
  323. package/dist/src/opencode/runner.js.map +1 -0
  324. package/dist/src/opencode/turn.d.ts +167 -0
  325. package/dist/src/opencode/turn.d.ts.map +1 -0
  326. package/dist/src/opencode/turn.js +761 -0
  327. package/dist/src/opencode/turn.js.map +1 -0
  328. package/dist/src/opencode/turns.d.ts +247 -0
  329. package/dist/src/opencode/turns.d.ts.map +1 -0
  330. package/dist/src/opencode/turns.js +867 -0
  331. package/dist/src/opencode/turns.js.map +1 -0
  332. package/dist/src/personas.d.ts.map +1 -1
  333. package/dist/src/personas.js +4 -1
  334. package/dist/src/personas.js.map +1 -1
  335. package/dist/src/react/ag-ui.d.ts +4 -2
  336. package/dist/src/react/ag-ui.d.ts.map +1 -1
  337. package/dist/src/react/ag-ui.js +2 -2
  338. package/dist/src/react/ag-ui.js.map +1 -1
  339. package/dist/src/react/client.d.ts +1 -1
  340. package/dist/src/react/client.d.ts.map +1 -1
  341. package/dist/src/react/client.js +1 -1
  342. package/dist/src/react/client.js.map +1 -1
  343. package/dist/src/react/core/ag-ui-backend.d.ts +109 -0
  344. package/dist/src/react/core/ag-ui-backend.d.ts.map +1 -0
  345. package/dist/src/react/core/ag-ui-backend.js +574 -0
  346. package/dist/src/react/core/ag-ui-backend.js.map +1 -0
  347. package/dist/src/react/core/agent-chat-transport.d.ts +187 -0
  348. package/dist/src/react/core/agent-chat-transport.d.ts.map +1 -0
  349. package/dist/src/react/core/agent-chat-transport.js +817 -0
  350. package/dist/src/react/core/agent-chat-transport.js.map +1 -0
  351. package/dist/src/react/core/approvals/countdown.d.ts +22 -0
  352. package/dist/src/react/core/approvals/countdown.d.ts.map +1 -0
  353. package/dist/src/react/core/approvals/countdown.js +39 -0
  354. package/dist/src/react/core/approvals/countdown.js.map +1 -0
  355. package/dist/src/react/core/approvals/proposals.d.ts +15 -0
  356. package/dist/src/react/core/approvals/proposals.d.ts.map +1 -0
  357. package/dist/src/react/core/approvals/proposals.js +82 -0
  358. package/dist/src/react/core/approvals/proposals.js.map +1 -0
  359. package/dist/src/react/core/approvals/use-action-proposals.d.ts +10 -0
  360. package/dist/src/react/core/approvals/use-action-proposals.d.ts.map +1 -0
  361. package/dist/src/react/core/approvals/use-action-proposals.js +86 -0
  362. package/dist/src/react/core/approvals/use-action-proposals.js.map +1 -0
  363. package/dist/src/react/core/attachments/files.d.ts +39 -0
  364. package/dist/src/react/core/attachments/files.d.ts.map +1 -0
  365. package/dist/src/react/core/attachments/files.js +89 -0
  366. package/dist/src/react/core/attachments/files.js.map +1 -0
  367. package/dist/src/react/core/attachments/use-attachments.d.ts +106 -0
  368. package/dist/src/react/core/attachments/use-attachments.d.ts.map +1 -0
  369. package/dist/src/react/core/attachments/use-attachments.js +217 -0
  370. package/dist/src/react/core/attachments/use-attachments.js.map +1 -0
  371. package/dist/src/react/core/backend.d.ts +245 -0
  372. package/dist/src/react/core/backend.d.ts.map +1 -0
  373. package/dist/src/react/core/backend.js +21 -0
  374. package/dist/src/react/core/backend.js.map +1 -0
  375. package/dist/src/react/core/background-runs.d.ts +32 -0
  376. package/dist/src/react/core/background-runs.d.ts.map +1 -0
  377. package/dist/src/react/core/background-runs.js +47 -0
  378. package/dist/src/react/core/background-runs.js.map +1 -0
  379. package/dist/src/react/core/catalog/use-agents.d.ts +31 -0
  380. package/dist/src/react/core/catalog/use-agents.d.ts.map +1 -0
  381. package/dist/src/react/core/catalog/use-agents.js +28 -0
  382. package/dist/src/react/core/catalog/use-agents.js.map +1 -0
  383. package/dist/src/react/core/catalog/use-models.d.ts +41 -0
  384. package/dist/src/react/core/catalog/use-models.d.ts.map +1 -0
  385. package/dist/src/react/core/catalog/use-models.js +35 -0
  386. package/dist/src/react/core/catalog/use-models.js.map +1 -0
  387. package/dist/src/react/core/catalog/use-resource.d.ts +12 -0
  388. package/dist/src/react/core/catalog/use-resource.d.ts.map +1 -0
  389. package/dist/src/react/core/catalog/use-resource.js +41 -0
  390. package/dist/src/react/core/catalog/use-resource.js.map +1 -0
  391. package/dist/src/react/core/client-wire.d.ts +14 -0
  392. package/dist/src/react/core/client-wire.d.ts.map +1 -0
  393. package/dist/src/react/core/client-wire.js +2 -0
  394. package/dist/src/react/core/client-wire.js.map +1 -0
  395. package/dist/src/react/core/client.d.ts +222 -0
  396. package/dist/src/react/core/client.d.ts.map +1 -0
  397. package/dist/src/react/core/client.js +435 -0
  398. package/dist/src/react/core/client.js.map +1 -0
  399. package/dist/src/react/core/components/ambient-ui.d.ts +22 -0
  400. package/dist/src/react/core/components/ambient-ui.d.ts.map +1 -0
  401. package/dist/src/react/core/components/ambient-ui.js +30 -0
  402. package/dist/src/react/core/components/ambient-ui.js.map +1 -0
  403. package/dist/src/react/core/components/chat-input.d.ts +44 -0
  404. package/dist/src/react/core/components/chat-input.d.ts.map +1 -0
  405. package/dist/src/react/core/components/chat-input.js +69 -0
  406. package/dist/src/react/core/components/chat-input.js.map +1 -0
  407. package/dist/src/react/core/components/index.d.ts +7 -0
  408. package/dist/src/react/core/components/index.d.ts.map +1 -0
  409. package/dist/src/react/core/components/index.js +7 -0
  410. package/dist/src/react/core/components/index.js.map +1 -0
  411. package/dist/src/react/core/components/message-item.d.ts +101 -0
  412. package/dist/src/react/core/components/message-item.d.ts.map +1 -0
  413. package/dist/src/react/core/components/message-item.js +118 -0
  414. package/dist/src/react/core/components/message-item.js.map +1 -0
  415. package/dist/src/react/core/components/message-list.d.ts +85 -0
  416. package/dist/src/react/core/components/message-list.d.ts.map +1 -0
  417. package/dist/src/react/core/components/message-list.js +45 -0
  418. package/dist/src/react/core/components/message-list.js.map +1 -0
  419. package/dist/src/react/core/components/speech-languages.d.ts +22 -0
  420. package/dist/src/react/core/components/speech-languages.d.ts.map +1 -0
  421. package/dist/src/react/core/components/speech-languages.js +38 -0
  422. package/dist/src/react/core/components/speech-languages.js.map +1 -0
  423. package/dist/src/react/core/components/use-speech-recognition.d.ts +19 -0
  424. package/dist/src/react/core/components/use-speech-recognition.d.ts.map +1 -0
  425. package/dist/src/react/core/components/use-speech-recognition.js +92 -0
  426. package/dist/src/react/core/components/use-speech-recognition.js.map +1 -0
  427. package/dist/src/react/core/composer/index.d.ts +4 -0
  428. package/dist/src/react/core/composer/index.d.ts.map +1 -0
  429. package/dist/src/react/core/composer/index.js +4 -0
  430. package/dist/src/react/core/composer/index.js.map +1 -0
  431. package/dist/src/react/core/composer/model.d.ts +83 -0
  432. package/dist/src/react/core/composer/model.d.ts.map +1 -0
  433. package/dist/src/react/core/composer/model.js +53 -0
  434. package/dist/src/react/core/composer/model.js.map +1 -0
  435. package/dist/src/react/core/composer/skills-source.d.ts +29 -0
  436. package/dist/src/react/core/composer/skills-source.d.ts.map +1 -0
  437. package/dist/src/react/core/composer/skills-source.js +61 -0
  438. package/dist/src/react/core/composer/skills-source.js.map +1 -0
  439. package/dist/src/react/core/composer/use-composer-autocomplete.d.ts +78 -0
  440. package/dist/src/react/core/composer/use-composer-autocomplete.d.ts.map +1 -0
  441. package/dist/src/react/core/composer/use-composer-autocomplete.js +244 -0
  442. package/dist/src/react/core/composer/use-composer-autocomplete.js.map +1 -0
  443. package/dist/src/react/core/config/use-agent-config.d.ts +21 -0
  444. package/dist/src/react/core/config/use-agent-config.d.ts.map +1 -0
  445. package/dist/src/react/core/config/use-agent-config.js +57 -0
  446. package/dist/src/react/core/config/use-agent-config.js.map +1 -0
  447. package/dist/src/react/core/elicitation/answers.d.ts +22 -0
  448. package/dist/src/react/core/elicitation/answers.d.ts.map +1 -0
  449. package/dist/src/react/core/elicitation/answers.js +65 -0
  450. package/dist/src/react/core/elicitation/answers.js.map +1 -0
  451. package/dist/src/react/core/feedback/use-message-feedback.d.ts +32 -0
  452. package/dist/src/react/core/feedback/use-message-feedback.d.ts.map +1 -0
  453. package/dist/src/react/core/feedback/use-message-feedback.js +106 -0
  454. package/dist/src/react/core/feedback/use-message-feedback.js.map +1 -0
  455. package/dist/src/react/core/genui/generative-ui.d.ts +76 -0
  456. package/dist/src/react/core/genui/generative-ui.d.ts.map +1 -0
  457. package/dist/src/react/core/genui/generative-ui.js +210 -0
  458. package/dist/src/react/core/genui/generative-ui.js.map +1 -0
  459. package/dist/src/react/core/genui/index.d.ts +5 -0
  460. package/dist/src/react/core/genui/index.d.ts.map +1 -0
  461. package/dist/src/react/core/genui/index.js +5 -0
  462. package/dist/src/react/core/genui/index.js.map +1 -0
  463. package/dist/src/react/core/genui/json-render.d.ts +54 -0
  464. package/dist/src/react/core/genui/json-render.d.ts.map +1 -0
  465. package/dist/src/react/core/genui/json-render.js +64 -0
  466. package/dist/src/react/core/genui/json-render.js.map +1 -0
  467. package/dist/src/react/core/genui/playwright.d.ts +12 -0
  468. package/dist/src/react/core/genui/playwright.d.ts.map +1 -0
  469. package/dist/src/react/core/genui/playwright.js +141 -0
  470. package/dist/src/react/core/genui/playwright.js.map +1 -0
  471. package/dist/src/react/core/genui/react-registry.d.ts +22 -0
  472. package/dist/src/react/core/genui/react-registry.d.ts.map +1 -0
  473. package/dist/src/react/core/genui/react-registry.js +72 -0
  474. package/dist/src/react/core/genui/react-registry.js.map +1 -0
  475. package/dist/src/react/core/genui/server.d.ts +32 -0
  476. package/dist/src/react/core/genui/server.d.ts.map +1 -0
  477. package/dist/src/react/core/genui/server.js +66 -0
  478. package/dist/src/react/core/genui/server.js.map +1 -0
  479. package/dist/src/react/core/genui/types.d.ts +98 -0
  480. package/dist/src/react/core/genui/types.d.ts.map +1 -0
  481. package/dist/src/react/core/genui/types.js +3 -0
  482. package/dist/src/react/core/genui/types.js.map +1 -0
  483. package/dist/src/react/core/genui/use-generative-ui.d.ts +42 -0
  484. package/dist/src/react/core/genui/use-generative-ui.d.ts.map +1 -0
  485. package/dist/src/react/core/genui/use-generative-ui.js +186 -0
  486. package/dist/src/react/core/genui/use-generative-ui.js.map +1 -0
  487. package/dist/src/react/core/http-error.d.ts +33 -0
  488. package/dist/src/react/core/http-error.d.ts.map +1 -0
  489. package/dist/src/react/core/http-error.js +47 -0
  490. package/dist/src/react/core/http-error.js.map +1 -0
  491. package/dist/src/react/core/index.d.ts +35 -0
  492. package/dist/src/react/core/index.d.ts.map +1 -0
  493. package/dist/src/react/core/index.js +34 -0
  494. package/dist/src/react/core/index.js.map +1 -0
  495. package/dist/src/react/core/markdown/agent-markdown.d.ts +39 -0
  496. package/dist/src/react/core/markdown/agent-markdown.d.ts.map +1 -0
  497. package/dist/src/react/core/markdown/agent-markdown.js +22 -0
  498. package/dist/src/react/core/markdown/agent-markdown.js.map +1 -0
  499. package/dist/src/react/core/markdown/index.d.ts +2 -0
  500. package/dist/src/react/core/markdown/index.d.ts.map +1 -0
  501. package/dist/src/react/core/markdown/index.js +2 -0
  502. package/dist/src/react/core/markdown/index.js.map +1 -0
  503. package/dist/src/react/core/media/index.d.ts +64 -0
  504. package/dist/src/react/core/media/index.d.ts.map +1 -0
  505. package/dist/src/react/core/media/index.js +135 -0
  506. package/dist/src/react/core/media/index.js.map +1 -0
  507. package/dist/src/react/core/media/tus.d.ts +13 -0
  508. package/dist/src/react/core/media/tus.d.ts.map +1 -0
  509. package/dist/src/react/core/media/tus.js +59 -0
  510. package/dist/src/react/core/media/tus.js.map +1 -0
  511. package/dist/src/react/core/presentation/phrasing.d.ts +25 -0
  512. package/dist/src/react/core/presentation/phrasing.d.ts.map +1 -0
  513. package/dist/src/react/core/presentation/phrasing.js +58 -0
  514. package/dist/src/react/core/presentation/phrasing.js.map +1 -0
  515. package/dist/src/react/core/presentation/result-view.d.ts +43 -0
  516. package/dist/src/react/core/presentation/result-view.d.ts.map +1 -0
  517. package/dist/src/react/core/presentation/result-view.js +90 -0
  518. package/dist/src/react/core/presentation/result-view.js.map +1 -0
  519. package/dist/src/react/core/presentation/tool-activity.d.ts +106 -0
  520. package/dist/src/react/core/presentation/tool-activity.d.ts.map +1 -0
  521. package/dist/src/react/core/presentation/tool-activity.js +165 -0
  522. package/dist/src/react/core/presentation/tool-activity.js.map +1 -0
  523. package/dist/src/react/core/presentation/use-tool-catalog.d.ts +39 -0
  524. package/dist/src/react/core/presentation/use-tool-catalog.d.ts.map +1 -0
  525. package/dist/src/react/core/presentation/use-tool-catalog.js +77 -0
  526. package/dist/src/react/core/presentation/use-tool-catalog.js.map +1 -0
  527. package/dist/src/react/core/provider.d.ts +68 -0
  528. package/dist/src/react/core/provider.d.ts.map +1 -0
  529. package/dist/src/react/core/provider.js +61 -0
  530. package/dist/src/react/core/provider.js.map +1 -0
  531. package/dist/src/react/core/queue/model.d.ts +73 -0
  532. package/dist/src/react/core/queue/model.d.ts.map +1 -0
  533. package/dist/src/react/core/queue/model.js +2 -0
  534. package/dist/src/react/core/queue/model.js.map +1 -0
  535. package/dist/src/react/core/quota/use-quota.d.ts +35 -0
  536. package/dist/src/react/core/quota/use-quota.d.ts.map +1 -0
  537. package/dist/src/react/core/quota/use-quota.js +47 -0
  538. package/dist/src/react/core/quota/use-quota.js.map +1 -0
  539. package/dist/src/react/core/reasoning/timing.d.ts +38 -0
  540. package/dist/src/react/core/reasoning/timing.d.ts.map +1 -0
  541. package/dist/src/react/core/reasoning/timing.js +73 -0
  542. package/dist/src/react/core/reasoning/timing.js.map +1 -0
  543. package/dist/src/react/core/run-errors.d.ts +37 -0
  544. package/dist/src/react/core/run-errors.d.ts.map +1 -0
  545. package/dist/src/react/core/run-errors.js +37 -0
  546. package/dist/src/react/core/run-errors.js.map +1 -0
  547. package/dist/src/react/core/stored-message-to-ui-message.d.ts +4 -0
  548. package/dist/src/react/core/stored-message-to-ui-message.d.ts.map +1 -0
  549. package/dist/src/react/core/stored-message-to-ui-message.js +216 -0
  550. package/dist/src/react/core/stored-message-to-ui-message.js.map +1 -0
  551. package/dist/src/react/core/stored-thread-to-ui-messages.d.ts +82 -0
  552. package/dist/src/react/core/stored-thread-to-ui-messages.d.ts.map +1 -0
  553. package/dist/src/react/core/stored-thread-to-ui-messages.js +116 -0
  554. package/dist/src/react/core/stored-thread-to-ui-messages.js.map +1 -0
  555. package/dist/src/react/core/threads/threads-events.d.ts +22 -0
  556. package/dist/src/react/core/threads/threads-events.d.ts.map +1 -0
  557. package/dist/src/react/core/threads/threads-events.js +21 -0
  558. package/dist/src/react/core/threads/threads-events.js.map +1 -0
  559. package/dist/src/react/core/threads/use-threads.d.ts +31 -0
  560. package/dist/src/react/core/threads/use-threads.d.ts.map +1 -0
  561. package/dist/src/react/core/threads/use-threads.js +81 -0
  562. package/dist/src/react/core/threads/use-threads.js.map +1 -0
  563. package/dist/src/react/core/transcript/index.d.ts +4 -0
  564. package/dist/src/react/core/transcript/index.d.ts.map +1 -0
  565. package/dist/src/react/core/transcript/index.js +4 -0
  566. package/dist/src/react/core/transcript/index.js.map +1 -0
  567. package/dist/src/react/core/transcript/model.d.ts +399 -0
  568. package/dist/src/react/core/transcript/model.d.ts.map +1 -0
  569. package/dist/src/react/core/transcript/model.js +725 -0
  570. package/dist/src/react/core/transcript/model.js.map +1 -0
  571. package/dist/src/react/core/transcript/use-chat-transcript.d.ts +254 -0
  572. package/dist/src/react/core/transcript/use-chat-transcript.d.ts.map +1 -0
  573. package/dist/src/react/core/transcript/use-chat-transcript.js +572 -0
  574. package/dist/src/react/core/transcript/use-chat-transcript.js.map +1 -0
  575. package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts +33 -0
  576. package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts.map +1 -0
  577. package/dist/src/react/core/transcript/use-stick-to-bottom.js +48 -0
  578. package/dist/src/react/core/transcript/use-stick-to-bottom.js.map +1 -0
  579. package/dist/src/react/core/use-agent-chat.d.ts +341 -0
  580. package/dist/src/react/core/use-agent-chat.d.ts.map +1 -0
  581. package/dist/src/react/core/use-agent-chat.js +1118 -0
  582. package/dist/src/react/core/use-agent-chat.js.map +1 -0
  583. package/dist/src/react/genui/index.d.ts +1 -7
  584. package/dist/src/react/genui/index.d.ts.map +1 -1
  585. package/dist/src/react/genui/index.js +1 -7
  586. package/dist/src/react/genui/index.js.map +1 -1
  587. package/dist/src/react/genui/json-render.d.ts +1 -5
  588. package/dist/src/react/genui/json-render.d.ts.map +1 -1
  589. package/dist/src/react/genui/json-render.js +1 -5
  590. package/dist/src/react/genui/json-render.js.map +1 -1
  591. package/dist/src/react/genui/server.d.ts +2 -0
  592. package/dist/src/react/genui/server.d.ts.map +1 -0
  593. package/dist/src/react/genui/server.js +2 -0
  594. package/dist/src/react/genui/server.js.map +1 -0
  595. package/dist/src/react/genui/server_playwright.d.ts +2 -0
  596. package/dist/src/react/genui/server_playwright.d.ts.map +1 -0
  597. package/dist/src/react/genui/server_playwright.js +2 -0
  598. package/dist/src/react/genui/server_playwright.js.map +1 -0
  599. package/dist/src/react/index.d.ts +5 -7
  600. package/dist/src/react/index.d.ts.map +1 -1
  601. package/dist/src/react/index.js +5 -7
  602. package/dist/src/react/index.js.map +1 -1
  603. package/dist/src/react/markdown.d.ts +1 -6
  604. package/dist/src/react/markdown.d.ts.map +1 -1
  605. package/dist/src/react/markdown.js +1 -6
  606. package/dist/src/react/markdown.js.map +1 -1
  607. package/dist/src/react/media.d.ts +1 -17
  608. package/dist/src/react/media.d.ts.map +1 -1
  609. package/dist/src/react/media.js +1 -17
  610. package/dist/src/react/media.js.map +1 -1
  611. package/dist/src/refusal.d.ts +3 -0
  612. package/dist/src/refusal.d.ts.map +1 -0
  613. package/dist/src/refusal.js +3 -0
  614. package/dist/src/refusal.js.map +1 -0
  615. package/dist/src/spi/agent-runner.d.ts +6 -0
  616. package/dist/src/spi/agent-runner.d.ts.map +1 -1
  617. package/dist/src/spi/chat-queue.d.ts +4 -1
  618. package/dist/src/spi/chat-queue.d.ts.map +1 -1
  619. package/dist/src/spi/chat-queue.js.map +1 -1
  620. package/dist/src/spi/protocol-adapter.d.ts +3 -3
  621. package/dist/src/spi/roles-policy.d.ts +7 -0
  622. package/dist/src/spi/roles-policy.d.ts.map +1 -1
  623. package/dist/src/spi/tool.d.ts +18 -3
  624. package/dist/src/spi/tool.d.ts.map +1 -1
  625. package/dist/src/stores/lucid-schema.d.ts +24 -6
  626. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  627. package/dist/src/stores/lucid-schema.js +49 -6
  628. package/dist/src/stores/lucid-schema.js.map +1 -1
  629. package/dist/src/stores/lucid.d.ts +2 -0
  630. package/dist/src/stores/lucid.d.ts.map +1 -1
  631. package/dist/src/stores/lucid.js +7 -0
  632. package/dist/src/stores/lucid.js.map +1 -1
  633. package/dist/src/testing/chat-queue-store-contract.d.ts.map +1 -1
  634. package/dist/src/testing/chat-queue-store-contract.js +4 -0
  635. package/dist/src/testing/chat-queue-store-contract.js.map +1 -1
  636. package/dist/src/testing/in-memory-store.d.ts.map +1 -1
  637. package/dist/src/testing/in-memory-store.js +1 -0
  638. package/dist/src/testing/in-memory-store.js.map +1 -1
  639. package/dist/src/tool-discovery.d.ts +1 -1
  640. package/dist/src/tool-discovery.d.ts.map +1 -1
  641. package/dist/src/tool-discovery.js +5 -1
  642. package/dist/src/tool-discovery.js.map +1 -1
  643. package/dist/src/tool-registry.d.ts +3 -0
  644. package/dist/src/tool-registry.d.ts.map +1 -1
  645. package/dist/src/tool-registry.js +15 -3
  646. package/dist/src/tool-registry.js.map +1 -1
  647. package/dist/src/tool-result-presentation.d.ts +12 -0
  648. package/dist/src/tool-result-presentation.d.ts.map +1 -0
  649. package/dist/src/tool-result-presentation.js +44 -0
  650. package/dist/src/tool-result-presentation.js.map +1 -0
  651. package/dist/src/types.d.ts +20 -0
  652. package/dist/src/types.d.ts.map +1 -1
  653. package/dist/src/ui-capabilities.d.ts +1 -8
  654. package/dist/src/ui-capabilities.d.ts.map +1 -1
  655. package/dist/src/ui-capabilities.js +3 -24
  656. package/dist/src/ui-capabilities.js.map +1 -1
  657. package/package.json +128 -22
  658. package/skills/agent-governance/SKILL.md +12 -4
  659. package/skills/agent-personas-agents/SKILL.md +2 -1
  660. package/skills/agent-setup/SKILL.md +73 -14
  661. package/skills/agent-testing/SKILL.md +22 -0
  662. package/skills/agent-tools/SKILL.md +57 -9
  663. package/dist/src/ag-ui/proposal-decision.d.ts.map +0 -1
  664. package/dist/src/ag-ui/proposal-decision.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { type Catalog } from './catalog.js';
2
+ /** Renderer support only. Component definitions and authorization remain server-owned. */
3
+ export interface UiCapabilities {
4
+ components: Array<{
5
+ name: string;
6
+ version: number;
7
+ }>;
8
+ }
9
+ export declare function validateUiCapabilities(value: unknown): UiCapabilities;
10
+ export declare function negotiateCatalog(catalog: Catalog, capabilities?: UiCapabilities): Catalog;
11
+ export type PreparedUiEmission = {
12
+ kind: 'ui';
13
+ component: string;
14
+ props: Record<string, unknown>;
15
+ version: number;
16
+ fallbackText: string;
17
+ componentVersions?: Record<string, number>;
18
+ } | {
19
+ kind: 'text';
20
+ text: string;
21
+ };
22
+ /** Validate against current trusted definitions before drawing or generating complete text. */
23
+ export declare function prepareUiEmission(catalog: Catalog, capabilities: UiCapabilities | undefined, component: string, props: Record<string, unknown>, version?: number): Promise<PreparedUiEmission>;
24
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/genui/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAiC,MAAM,cAAc,CAAC;AAK3E,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAuBrE;AAMD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,cAAc,GAAG,OAAO,CAWzF;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,+FAA+F;AAC/F,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,cAAc,GAAG,SAAS,EACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAyC7B"}
@@ -0,0 +1,81 @@
1
+ import { COMPONENT_NAME, defineCatalog } from './catalog.js';
2
+ import { formatIssues } from './schema.js';
3
+ import { componentToText, treeToText } from './text.js';
4
+ import { GENUI_TREE_COMPONENT, validateTree } from './tree.js';
5
+ export function validateUiCapabilities(value) {
6
+ if (!record(value) ||
7
+ Object.keys(value).some((key) => key !== 'components') ||
8
+ !Array.isArray(value.components))
9
+ throw new TypeError('Invalid UI capabilities');
10
+ const seen = new Set();
11
+ const components = value.components.map((component) => {
12
+ if (!record(component) ||
13
+ Object.keys(component).some((key) => key !== 'name' && key !== 'version') ||
14
+ typeof component.name !== 'string' ||
15
+ !COMPONENT_NAME.test(component.name) ||
16
+ !Number.isSafeInteger(component.version) ||
17
+ Number(component.version) <= 0 ||
18
+ seen.has(component.name))
19
+ throw new TypeError('Invalid UI component capability');
20
+ seen.add(component.name);
21
+ return { name: component.name, version: Number(component.version) };
22
+ });
23
+ return { components };
24
+ }
25
+ function record(value) {
26
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
27
+ }
28
+ export function negotiateCatalog(catalog, capabilities) {
29
+ if (capabilities === undefined)
30
+ return catalog;
31
+ const supported = validateUiCapabilities(capabilities).components;
32
+ return defineCatalog(catalog.components.filter((component) => supported.some((entry) => entry.name === component.name && entry.version === (component.version ?? 1))), { jsonSchemaValidator: catalog.validator });
33
+ }
34
+ /** Validate against current trusted definitions before drawing or generating complete text. */
35
+ export async function prepareUiEmission(catalog, capabilities, component, props, version) {
36
+ const drawable = negotiateCatalog(catalog, capabilities);
37
+ if (component === GENUI_TREE_COMPONENT) {
38
+ if (version !== undefined && version !== 1)
39
+ throw new Error('Invalid UI tree version');
40
+ const validated = await validateTree(catalog, props.root);
41
+ if (!validated.ok)
42
+ throw new Error(`Invalid UI tree: ${formatIssues(validated.issues)}`);
43
+ const supported = (node) => drawable.has(node.type) && (node.children ?? []).every(supported);
44
+ const versions = new Map();
45
+ const collectVersions = (node) => {
46
+ versions.set(node.type, catalog.get(node.type)?.version ?? 1);
47
+ for (const child of node.children ?? [])
48
+ collectVersions(child);
49
+ };
50
+ collectVersions(validated.value);
51
+ return supported(validated.value)
52
+ ? {
53
+ kind: 'ui',
54
+ component,
55
+ props: { root: validated.value },
56
+ version: 1,
57
+ fallbackText: treeToText(catalog, validated.value),
58
+ componentVersions: Object.fromEntries(versions),
59
+ }
60
+ : { kind: 'text', text: treeToText(catalog, validated.value) };
61
+ }
62
+ const definition = catalog.get(component);
63
+ if (definition === undefined)
64
+ throw new Error(`Unknown UI component "${component}"`);
65
+ const currentVersion = definition.version ?? 1;
66
+ if (version !== undefined && version !== currentVersion)
67
+ throw new Error(`Invalid UI component version for "${component}"`);
68
+ const validated = await catalog.validate(component, props);
69
+ if (!validated.ok)
70
+ throw new Error(`Invalid UI props: ${formatIssues(validated.issues)}`);
71
+ return drawable.has(component)
72
+ ? {
73
+ kind: 'ui',
74
+ component,
75
+ props: validated.value,
76
+ version: currentVersion,
77
+ fallbackText: componentToText(catalog, component, validated.value),
78
+ }
79
+ : { kind: 'text', text: componentToText(catalog, component, validated.value) };
80
+ }
81
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/genui/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { type GenuiValidation, type JsonSchema, type JsonSchemaValidator, type PropsSchema } from './schema.js';
2
+ /**
3
+ * One component a server may push into a conversation. Data only — how it LOOKS is each app's own
4
+ * renderer, looked up by {@link name}. The same definition serves the model (description + props
5
+ * schema), the server (validation), text-only channels ({@link fallbackText}) and the client
6
+ * (validation before rendering).
7
+ */
8
+ export interface ComponentDefinition<P = Record<string, unknown>> {
9
+ /** Registry key, e.g. `DataTable`. What a `ui` frame's `component` names. */
10
+ name: string;
11
+ /** Human label: "Data table". */
12
+ title: string;
13
+ /** Shown to the model: what the component is for and when to use it. */
14
+ description: string;
15
+ /** The props schema: a Standard Schema (Zod, Valibot, ArkType) or a JSON Schema object. */
16
+ props: PropsSchema;
17
+ /** Portable normalized props schema. Required when input transformations are not idempotent. */
18
+ outputProps?: PropsSchema;
19
+ /**
20
+ * The component takes nested elements (a layout: `Stack`, `Card`). Only meaningful in tree mode,
21
+ * where a node's `children` are validated against the catalog too. Outside tree mode such a
22
+ * component has nothing to hold, so it gets no `ui__show_*` tool and the generic show tool does
23
+ * not offer it.
24
+ */
25
+ children?: boolean;
26
+ /**
27
+ * Plain text / Slack mrkdwn rendering of these props, for a channel that cannot draw the
28
+ * component. Absent → {@link componentToText} prints the props as JSON. An empty string renders
29
+ * nothing (a layout with nothing of its own to say); in a tree its children still render.
30
+ */
31
+ fallbackText?(props: P): string;
32
+ /**
33
+ * Pushed by the server (e.g. an approval card), never offered to the model. Excluded from
34
+ * {@link catalogToModelText} and from the tool factories.
35
+ */
36
+ internal?: boolean;
37
+ /**
38
+ * Schema version of {@link props}. Stamped on every `ui` frame the component is pushed with, so a
39
+ * client can keep rendering messages persisted under an older shape.
40
+ */
41
+ version?: number;
42
+ }
43
+ /** Component names: an identifier a registry key, a tool name and a snake_case slug can all be derived from. */
44
+ export declare const COMPONENT_NAME: RegExp;
45
+ /** Declare a component. Validates the name and returns the definition unchanged (typed). */
46
+ export declare function defineComponent<P = Record<string, unknown>>(definition: ComponentDefinition<P>): ComponentDefinition<P>;
47
+ export interface CatalogOptions {
48
+ /** How JSON Schema props are checked. Default: {@link builtinJsonSchemaValidator}; pass `ajvValidator(new Ajv())` for full JSON Schema. */
49
+ jsonSchemaValidator?: JsonSchemaValidator;
50
+ }
51
+ /** An immutable set of component definitions, looked up by name. */
52
+ export interface Catalog {
53
+ readonly components: readonly ComponentDefinition<unknown>[];
54
+ readonly validator: JsonSchemaValidator;
55
+ get(name: string): ComponentDefinition<unknown> | undefined;
56
+ has(name: string): boolean;
57
+ /** The components a model may be offered (every non-`internal` one). */
58
+ modelComponents(): ComponentDefinition<unknown>[];
59
+ /** Validate `props` for `component`. An unknown component is a validation failure, not a throw. */
60
+ validate(component: string, props: unknown): Promise<GenuiValidation<Record<string, unknown>>>;
61
+ /**
62
+ * {@link validate} without waiting — `undefined` only when the component's Standard Schema
63
+ * validates asynchronously. An unknown component is a failure, as in `validate`.
64
+ */
65
+ validateSync(component: string, props: unknown): GenuiValidation<Record<string, unknown>> | undefined;
66
+ /** The component's props as JSON Schema, when it can be derived (see {@link toJsonSchema}). */
67
+ jsonSchemaFor(component: string): JsonSchema | undefined;
68
+ /** A new catalog with these components added (a later definition replaces an earlier one of the same name). */
69
+ extend(components: readonly ComponentDefinition<unknown>[]): Catalog;
70
+ }
71
+ /**
72
+ * Collect component definitions into a {@link Catalog}. Names must be unique; to override a
73
+ * definition (e.g. a builtin), use {@link Catalog.extend}.
74
+ */
75
+ export declare function defineCatalog(components: readonly ComponentDefinition<unknown>[], options?: CatalogOptions): Catalog;
76
+ /**
77
+ * The model components that stand on their own: every one but a layout (`children: true`). Outside
78
+ * tree mode nothing can be nested, so a layout could only be pushed empty — it gets no
79
+ * `ui__show_*` tool and is not offered by the generic show tool.
80
+ */
81
+ export declare function standaloneComponents(catalog: Catalog): ComponentDefinition<unknown>[];
82
+ /** `DataTable` → `data_table`, `KPICards` → `kpi_cards`. */
83
+ export declare function toSnakeCase(name: string): string;
84
+ /** The per-component tool name: `ui__show_data_table` with the default prefix. */
85
+ export declare function toolNameFor(component: string, prefix?: string): string;
86
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/genui/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAIjB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9D,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,KAAK,EAAE,WAAW,CAAC;IACnB,gGAAgG;IAChG,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gHAAgH;AAChH,eAAO,MAAM,cAAc,QAAgC,CAAC;AAE5D,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACjC,mBAAmB,CAAC,CAAC,CAAC,CAcxB;AAED,MAAM,WAAW,cAAc;IAC7B,2IAA2I;IAC3I,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,oEAAoE;AACpE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,wEAAwE;IACxE,eAAe,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,mGAAmG;IACnG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/F;;;OAGG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxD,+FAA+F;IAC/F,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,+GAA+G;IAC/G,MAAM,CAAC,UAAU,EAAE,SAAS,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC;CACtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,SAAS,mBAAmB,CAAC,OAAO,CAAC,EAAE,EACnD,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAUT;AAyDD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAErF;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAc,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,96 @@
1
+ import { builtinJsonSchemaValidator, toJsonSchema, validateProps, validatePropsSync, } from './schema.js';
2
+ /** Component names: an identifier a registry key, a tool name and a snake_case slug can all be derived from. */
3
+ export const COMPONENT_NAME = /^[A-Za-z][A-Za-z0-9]{0,63}$/;
4
+ /** Declare a component. Validates the name and returns the definition unchanged (typed). */
5
+ export function defineComponent(definition) {
6
+ if (!COMPONENT_NAME.test(definition.name)) {
7
+ throw new Error(`genui: component name "${definition.name}" must be letters and digits, starting with a letter (e.g. DataTable)`);
8
+ }
9
+ if (definition.version !== undefined &&
10
+ (!Number.isSafeInteger(definition.version) || definition.version <= 0))
11
+ throw new RangeError('genui: component version must be a positive safe integer');
12
+ if (definition.fallbackText !== undefined && typeof definition.fallbackText !== 'function')
13
+ throw new TypeError('genui: fallbackText must be a function');
14
+ return definition;
15
+ }
16
+ /**
17
+ * Collect component definitions into a {@link Catalog}. Names must be unique; to override a
18
+ * definition (e.g. a builtin), use {@link Catalog.extend}.
19
+ */
20
+ export function defineCatalog(components, options = {}) {
21
+ const byName = new Map();
22
+ for (const component of components) {
23
+ defineComponent(component);
24
+ if (byName.has(component.name)) {
25
+ throw new Error(`genui: component "${component.name}" is defined twice in one catalog`);
26
+ }
27
+ byName.set(component.name, component);
28
+ }
29
+ return buildCatalog(byName, options.jsonSchemaValidator ?? builtinJsonSchemaValidator);
30
+ }
31
+ function buildCatalog(byName, validator) {
32
+ const list = Object.freeze([...byName.values()]);
33
+ return {
34
+ components: list,
35
+ validator,
36
+ get: (name) => byName.get(name),
37
+ has: (name) => byName.has(name),
38
+ modelComponents: () => list.filter((component) => component.internal !== true),
39
+ async validate(component, props) {
40
+ const definition = byName.get(component);
41
+ if (definition === undefined) {
42
+ return {
43
+ ok: false,
44
+ issues: [{ path: [], message: `unknown component "${component}"` }],
45
+ };
46
+ }
47
+ const result = await validateProps(definition.outputProps ?? definition.props, props, validator);
48
+ return result;
49
+ },
50
+ validateSync(component, props) {
51
+ const definition = byName.get(component);
52
+ if (definition === undefined) {
53
+ return {
54
+ ok: false,
55
+ issues: [{ path: [], message: `unknown component "${component}"` }],
56
+ };
57
+ }
58
+ return validatePropsSync(definition.outputProps ?? definition.props, props, validator);
59
+ },
60
+ jsonSchemaFor(component) {
61
+ const definition = byName.get(component);
62
+ return definition === undefined
63
+ ? undefined
64
+ : toJsonSchema(definition.outputProps ?? definition.props);
65
+ },
66
+ extend(more) {
67
+ const next = new Map(byName);
68
+ for (const component of more) {
69
+ defineComponent(component);
70
+ next.set(component.name, component);
71
+ }
72
+ return buildCatalog(next, validator);
73
+ },
74
+ };
75
+ }
76
+ /**
77
+ * The model components that stand on their own: every one but a layout (`children: true`). Outside
78
+ * tree mode nothing can be nested, so a layout could only be pushed empty — it gets no
79
+ * `ui__show_*` tool and is not offered by the generic show tool.
80
+ */
81
+ export function standaloneComponents(catalog) {
82
+ return catalog.modelComponents().filter((component) => component.children !== true);
83
+ }
84
+ /** `DataTable` → `data_table`, `KPICards` → `kpi_cards`. */
85
+ export function toSnakeCase(name) {
86
+ return name
87
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
88
+ .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
89
+ .replace(/[^a-zA-Z0-9]+/g, '_')
90
+ .toLowerCase();
91
+ }
92
+ /** The per-component tool name: `ui__show_data_table` with the default prefix. */
93
+ export function toolNameFor(component, prefix = 'ui__show_') {
94
+ return `${prefix}${toSnakeCase(component)}`;
95
+ }
96
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/genui/catalog.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,7 @@
1
- /**
2
- * The framework-free half of the genui wiring: the types `config/agent.ts` holds and the provider
3
- * calls. Imports nothing from `@dudousxd/nestjs-agent-core`, so the main entry (and `defineConfig`'s
4
- * types) never needs that optional peer; only `@adonis-agora/agent/genui` does.
5
- */
1
+ /** Framework-independent wiring for the local Adonis GenUI catalog and provider. */
6
2
  import type { FunctionalTool } from '../ai-tool-ref.js';
7
- import type { Actor } from '../types.js';
3
+ import type { Catalog } from './catalog.js';
4
+ import type { GenuiCatalogScope } from './tools.js';
8
5
  /** What the provider hands a {@link GenuiFactory} at boot. */
9
6
  export interface GenuiFactoryContext {
10
7
  /**
@@ -15,14 +12,10 @@ export interface GenuiFactoryContext {
15
12
  }
16
13
  /** What a {@link GenuiFactory} produces: the tools to register, and the boot-time catalog. */
17
14
  export interface GenuiSetup {
18
- resolveCatalog?: (scope: {
19
- actor: Actor;
20
- threadId?: string;
21
- agentName?: string;
22
- }) => unknown | Promise<unknown>;
15
+ resolveCatalog?: (scope: GenuiCatalogScope) => Catalog | Promise<Catalog>;
23
16
  tools: FunctionalTool[];
24
17
  /** The boot-time catalog, bound in the container as `AgentGenui`. */
25
- catalog: unknown;
18
+ catalog: Catalog;
26
19
  }
27
20
  /**
28
21
  * `genui` in `config/agent.ts`: a lazy factory, built by `genui({ … })` from
@@ -34,8 +27,8 @@ export type GenuiFactory = (ctx: GenuiFactoryContext) => Promise<GenuiSetup>;
34
27
  * genui: AgentGenui)` → `this.genui.catalog` (the same object a browser build imports).
35
28
  */
36
29
  export declare class AgentGenui {
37
- readonly catalog: unknown;
30
+ readonly catalog: Catalog;
38
31
  readonly resolveCatalog?: GenuiSetup['resolveCatalog'];
39
- constructor(catalog: unknown, resolveCatalog?: GenuiSetup['resolveCatalog']);
32
+ constructor(catalog: Catalog, resolveCatalog?: GenuiSetup['resolveCatalog']);
40
33
  }
41
34
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/genui/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClE;AAED,8FAA8F;AAC9F,MAAM,WAAW,UAAU;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAU;IAEnB,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAFxD,YACW,OAAO,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,EACpD;CACL"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/genui/factory.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClE;AAED,8FAA8F;AAC9F,MAAM,WAAW,UAAU;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAU;IAEnB,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAFxD,YACW,OAAO,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,EACpD;CACL"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/genui/factory.ts"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,MAAM,OAAO,UAAU;IAEV,OAAO;IACP,cAAc;IAFzB,YACW,OAAgB,EAChB,cAA6C;uBAD7C,OAAO;8BACP,cAAc;IACtB,CAAC;CACL"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/genui/factory.ts"],"names":[],"mappings":"AA4BA;;;GAGG;AACH,MAAM,OAAO,UAAU;IAEV,OAAO;IACP,cAAc;IAFzB,YACW,OAAgB,EAChB,cAA6C;uBAD7C,OAAO;8BACP,cAAc;IACtB,CAAC;CACL"}
@@ -1,19 +1,11 @@
1
1
  /**
2
- * `@adonis-agora/agent/genui` — generative UI for the Adonis agent.
3
- *
4
- * The catalog itself (component definitions, validation, model-facing text, the tools that push `ui`
5
- * frames) is `@dudousxd/nestjs-agent-core/genui`, re-exported here unchanged: it is isomorphic and
6
- * framework-free, so ONE catalog file serves this server, a NestJS one, and the browser
7
- * (`@dudousxd/nestjs-agent-react`'s `GenuiProvider`) — duplicating it would let the three drift.
8
- * Install `@dudousxd/nestjs-agent-core` (an optional peer) to use this entry.
9
- *
10
- * What is Adonis's own is {@link genui}: the `config/agent.ts` factory that turns a catalog into
11
- * registered tools, with an optional per-request catalog resolver built through the container.
2
+ * Framework-independent GenUI owned by the Adonis agent: schemas, catalogs, presentations,
3
+ * renderers and UI tools. The same local definitions can be imported by browser code.
12
4
  */
13
- import { type Catalog, type GenuiCatalogScope, type GenuiToolsOptions } from '@dudousxd/nestjs-agent-core/genui';
14
5
  import { type GenuiFactory } from './factory.js';
15
- export * from '@dudousxd/nestjs-agent-core/genui';
6
+ import { type Catalog, type GenuiCatalogScope, type GenuiToolsOptions } from './public.js';
16
7
  export { AgentGenui, type GenuiFactory, type GenuiFactoryContext, type GenuiSetup, } from './factory.js';
8
+ export * from './public.js';
17
9
  /**
18
10
  * Picks the catalog for ONE request — a tenant's own components, a plan's versions. Extend it and
19
11
  * pass the class as `resolver`: the provider builds it through the container, so it can `@inject()`
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEvB,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,cAAc,CAAC;AAE3E,cAAc,mCAAmC,CAAC;AAClD,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAEtB;;;;GAIG;AACH,8BAAsB,oBAAoB;IACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,KAAK,cAAc,GACf,oBAAoB,GACpB,CAAC,QAAQ,MACP,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,oBAAoB,CAAC,GAC1B,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/D,iGAAiG;AACjG,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IAC7E,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,YAAY,CAsB9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAE5B;;;;GAIG;AACH,8BAAsB,oBAAoB;IACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,KAAK,cAAc,GACf,oBAAoB,GACpB,CAAC,QAAQ,MACP,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,oBAAoB,CAAC,GAC1B,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/D,iGAAiG;AACjG,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IAC7E,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,YAAY,CAe9D"}
@@ -1,18 +1,10 @@
1
1
  /**
2
- * `@adonis-agora/agent/genui` — generative UI for the Adonis agent.
3
- *
4
- * The catalog itself (component definitions, validation, model-facing text, the tools that push `ui`
5
- * frames) is `@dudousxd/nestjs-agent-core/genui`, re-exported here unchanged: it is isomorphic and
6
- * framework-free, so ONE catalog file serves this server, a NestJS one, and the browser
7
- * (`@dudousxd/nestjs-agent-react`'s `GenuiProvider`) — duplicating it would let the three drift.
8
- * Install `@dudousxd/nestjs-agent-core` (an optional peer) to use this entry.
9
- *
10
- * What is Adonis's own is {@link genui}: the `config/agent.ts` factory that turns a catalog into
11
- * registered tools, with an optional per-request catalog resolver built through the container.
2
+ * Framework-independent GenUI owned by the Adonis agent: schemas, catalogs, presentations,
3
+ * renderers and UI tools. The same local definitions can be imported by browser code.
12
4
  */
13
- import { defineCatalog, genuiTools, } from '@dudousxd/nestjs-agent-core/genui';
14
- export * from '@dudousxd/nestjs-agent-core/genui';
5
+ import { defineCatalog, genuiTools, } from './public.js';
15
6
  export { AgentGenui, } from './factory.js';
7
+ export * from './public.js';
16
8
  /**
17
9
  * Picks the catalog for ONE request — a tenant's own components, a plan's versions. Extend it and
18
10
  * pass the class as `resolver`: the provider builds it through the container, so it can `@inject()`
@@ -61,12 +53,7 @@ export function genui(options = {}) {
61
53
  return {
62
54
  catalog,
63
55
  ...(resolveCatalog === undefined ? {} : { resolveCatalog }),
64
- // The core's tools are typed against the NestJS core's SPI; the shapes are the same contract
65
- // (a spec, and a handler whose ctx carries `emitUi`), so they register here as they are.
66
- tools: tools.map((tool) => ({
67
- spec: tool.spec,
68
- handler: tool.handler,
69
- })),
56
+ tools,
70
57
  };
71
58
  };
72
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAEL,aAAa,EAGb,UAAU,GACX,MAAM,mCAAmC,CAAC;AAM3C,cAAc,mCAAmC,CAAC;AAClD,OAAO,EACL,UAAU,GAIX,MAAM,cAAc,CAAC;AAEtB;;;;GAIG;AACH,MAAM,OAAgB,oBAAoB;CAEzC;AAqBD,SAAS,eAAe,CACtB,KAAqB;IAIrB,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,YAAY,oBAAoB,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAoC,EACpC,GAAwB;IAExB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,QAAQ,YAAY,oBAAoB;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxF,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAoE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CAAC,OAAO,GAAiB,EAAE;IAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE;YAChC,GAAG,IAAI;YACP,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO;YACL,OAAO;YACP,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;YAC3D,6FAA6F;YAC7F,yFAAyF;YACzF,KAAK,EAAE,KAAK,CAAC,GAAG,CACd,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC;gBACzB,IAAI,EAAE,IAAI,CAAC,IAA2B;gBACtC,OAAO,EAAE,IAAI,CAAC,OAAiC;aAChD,CAAC,CACH;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/genui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAEL,aAAa,EAGb,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,GAIX,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAE5B;;;;GAIG;AACH,MAAM,OAAgB,oBAAoB;CAEzC;AAqBD,SAAS,eAAe,CACtB,KAAqB;IAIrB,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,YAAY,oBAAoB,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAoC,EACpC,GAAwB;IAExB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,QAAQ,YAAY,oBAAoB;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxF,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAoE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CAAC,OAAO,GAAiB,EAAE;IAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE;YAChC,GAAG,IAAI;YACP,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO;YACL,OAAO;YACP,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;YAC3D,KAAK;SACN,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Isomorphic public GenUI contracts and implementation. */
2
+ export { negotiateCatalog, type PreparedUiEmission, prepareUiEmission, type UiCapabilities, validateUiCapabilities, } from './capabilities.js';
3
+ export { type Catalog, type CatalogOptions, COMPONENT_NAME, type ComponentDefinition, defineCatalog, defineComponent, toolNameFor, toSnakeCase, } from './catalog.js';
4
+ export { type ChartProps, type ComponentFactory, type ComponentManifest, type ComponentPresentation, type ComponentRegistry, type ComponentRenderer, chart, createComponent, createComponentRegistry, snapshotComponentPresentation, type TableCell, type TableProps, table, validatePresentationBatch, } from './registry.js';
5
+ export { type AjvLike, ajvValidator, builtinJsonSchemaValidator, formatIssues, type GenuiIssue, type GenuiValidation, isStandardSchema, type JsonSchema, type JsonSchemaValidator, type PropsSchema, toJsonSchema, validateProps, validatePropsSync, } from './schema.js';
6
+ export { type CatalogTextOptions, catalogToModelText, componentToText, fillTemplate, getPath, summarizeSchema, treeToText, } from './text.js';
7
+ export { GENUI_SHOW_TOOL, type GenuiCatalogScope, type GenuiTool, type GenuiToolOutput, type GenuiToolsOptions, genuiTools, jsonStandardSchema, type ResolveGenuiCatalog, showToolJsonSchema, } from './tools.js';
8
+ export { type FlatSpec, GENUI_TREE_COMPONENT, type GenuiElement, type GenuiTreeProps, type TreeLimits, treeJsonSchema, treeToFlatSpec, validateTree, } from './tree.js';
9
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/genui/public.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EACL,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,KAAK,cAAc,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,EACL,eAAe,EACf,uBAAuB,EACvB,6BAA6B,EAC7B,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,EACL,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,OAAO,EACZ,YAAY,EACZ,0BAA0B,EAC1B,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,OAAO,EACP,eAAe,EACf,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,UAAU,EACV,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,QAAQ,EACb,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,cAAc,EACd,cAAc,EACd,YAAY,GACb,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Isomorphic public GenUI contracts and implementation. */
2
+ export { negotiateCatalog, prepareUiEmission, validateUiCapabilities, } from './capabilities.js';
3
+ export { COMPONENT_NAME, defineCatalog, defineComponent, toolNameFor, toSnakeCase, } from './catalog.js';
4
+ export { chart, createComponent, createComponentRegistry, snapshotComponentPresentation, table, validatePresentationBatch, } from './registry.js';
5
+ export { ajvValidator, builtinJsonSchemaValidator, formatIssues, isStandardSchema, toJsonSchema, validateProps, validatePropsSync, } from './schema.js';
6
+ export { catalogToModelText, componentToText, fillTemplate, getPath, summarizeSchema, treeToText, } from './text.js';
7
+ export { GENUI_SHOW_TOOL, genuiTools, jsonStandardSchema, showToolJsonSchema, } from './tools.js';
8
+ export { GENUI_TREE_COMPONENT, treeJsonSchema, treeToFlatSpec, validateTree, } from './tree.js';
9
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/genui/public.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EACL,gBAAgB,EAEhB,iBAAiB,EAEjB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,cAAc,EAEd,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAOL,KAAK,EACL,eAAe,EACf,uBAAuB,EACvB,6BAA6B,EAG7B,KAAK,EACL,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,YAAY,EACZ,0BAA0B,EAC1B,YAAY,EAGZ,gBAAgB,EAIhB,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,OAAO,EACP,eAAe,EACf,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,eAAe,EAKf,UAAU,EACV,kBAAkB,EAElB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,EAIpB,cAAc,EACd,cAAc,EACd,YAAY,GACb,MAAM,WAAW,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
2
+ import { type Catalog, type CatalogOptions, type ComponentDefinition } from './catalog.js';
3
+ import { type JsonSchema } from './schema.js';
4
+ /** Plain, durable data. Renderer functions and binary attachments never enter a UI frame. */
5
+ export interface ComponentPresentation<P = Record<string, unknown>> {
6
+ component: string;
7
+ props: P;
8
+ version: number;
9
+ fallbackText: string;
10
+ }
11
+ export interface ComponentFactory<Input, Output = Input> {
12
+ (props: Input): Promise<ComponentPresentation<Output>>;
13
+ readonly definition: ComponentDefinition<Output>;
14
+ }
15
+ /** Reject values JSON would silently discard/coerce, and detach from caller-owned objects. */
16
+ export declare function snapshotComponentPresentation<T>(value: T): T;
17
+ export declare function createComponent<S extends StandardSchemaV1>(definition: Omit<ComponentDefinition<StandardSchemaV1.InferOutput<S>>, 'props'> & {
18
+ props: S;
19
+ }, options?: CatalogOptions): ComponentFactory<StandardSchemaV1.InferInput<S>, StandardSchemaV1.InferOutput<S>>;
20
+ export declare function createComponent<P = Record<string, unknown>>(definition: ComponentDefinition<P>, options?: CatalogOptions): ComponentFactory<P>;
21
+ export type ComponentRenderer<P = Record<string, unknown>, Context = unknown> = (props: P, context?: Context) => unknown | Promise<unknown>;
22
+ export interface ComponentManifest {
23
+ name: string;
24
+ title: string;
25
+ description: string;
26
+ version: number;
27
+ props?: JsonSchema;
28
+ }
29
+ export interface ComponentRegistry<Context = unknown> {
30
+ readonly catalog: Catalog;
31
+ readonly manifest: readonly ComponentManifest[];
32
+ register<P>(definition: ComponentDefinition<P>, renderers: Record<string, ComponentRenderer<P, Context>>): this;
33
+ /** Revalidate against the app's authoritative definition and regenerate trusted fallback text. */
34
+ prepare(presentation: ComponentPresentation): Promise<ComponentPresentation>;
35
+ render(presentation: ComponentPresentation, channel: string, context?: Context): Promise<unknown>;
36
+ }
37
+ /** A registry is owned by one app/tenant; registering never mutates a shared singleton. */
38
+ export declare function createComponentRegistry<Context = unknown>(options?: CatalogOptions): ComponentRegistry<Context>;
39
+ export type TableCell = string | number | boolean | null;
40
+ export interface TableProps {
41
+ title?: string;
42
+ columns: {
43
+ key: string;
44
+ label: string;
45
+ align?: 'left' | 'right' | 'center';
46
+ format?: 'text' | 'number' | 'currency' | 'percent' | 'date' | 'link';
47
+ }[];
48
+ rows: Record<string, TableCell>[];
49
+ }
50
+ export interface ChartProps {
51
+ type: 'bar' | 'line';
52
+ title?: string;
53
+ xKey: string;
54
+ series: {
55
+ key: string;
56
+ label?: string;
57
+ }[];
58
+ data: Record<string, TableCell>[];
59
+ unit?: string;
60
+ }
61
+ export declare const table: ComponentFactory<TableProps, TableProps>;
62
+ export declare const chart: ComponentFactory<ChartProps, ChartProps>;
63
+ /** Prepare all JSON emissions before any sink receives a partial batch. Factories validate schemas. */
64
+ export declare function validatePresentationBatch(presentations: ComponentPresentation<object> | readonly ComponentPresentation<object>[]): ComponentPresentation[];
65
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/genui/registry.ts"],"names":[],"mappings":"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"}