@agentuity/workbench 0.0.63 → 0.0.65

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 (405) hide show
  1. package/dist/components/App.d.ts +6 -0
  2. package/dist/components/App.d.ts.map +1 -0
  3. package/dist/components/App.js +13 -0
  4. package/dist/components/App.js.map +1 -0
  5. package/dist/components/ConnectionStatus.d.ts +7 -0
  6. package/dist/components/ConnectionStatus.d.ts.map +1 -0
  7. package/dist/components/ConnectionStatus.js +52 -0
  8. package/dist/components/ConnectionStatus.js.map +1 -0
  9. package/dist/components/Inline.d.ts +10 -0
  10. package/dist/components/Inline.d.ts.map +1 -0
  11. package/dist/components/Inline.js +11 -0
  12. package/dist/components/Inline.js.map +1 -0
  13. package/dist/components/ai-elements/actions.d.ts +10 -0
  14. package/dist/components/ai-elements/actions.d.ts.map +1 -0
  15. package/dist/components/ai-elements/actions.js +14 -0
  16. package/dist/components/ai-elements/actions.js.map +1 -0
  17. package/dist/components/ai-elements/artifact.d.ts +24 -0
  18. package/dist/components/ai-elements/artifact.d.ts.map +1 -0
  19. package/dist/components/ai-elements/artifact.js +21 -0
  20. package/dist/components/ai-elements/artifact.js.map +1 -0
  21. package/dist/components/ai-elements/branch.d.ts +21 -0
  22. package/dist/components/ai-elements/branch.d.ts.map +1 -0
  23. package/dist/components/ai-elements/branch.js +71 -0
  24. package/dist/components/ai-elements/branch.js.map +1 -0
  25. package/dist/components/ai-elements/canvas.d.ts +9 -0
  26. package/dist/components/ai-elements/canvas.d.ts.map +1 -0
  27. package/dist/components/ai-elements/canvas.js +6 -0
  28. package/dist/components/ai-elements/canvas.js.map +1 -0
  29. package/dist/components/ai-elements/chain-of-thought.d.ts +30 -0
  30. package/dist/components/ai-elements/chain-of-thought.d.ts.map +1 -0
  31. package/dist/components/ai-elements/chain-of-thought.js +52 -0
  32. package/dist/components/ai-elements/chain-of-thought.js.map +1 -0
  33. package/dist/components/ai-elements/code-block.d.ts +18 -0
  34. package/dist/components/ai-elements/code-block.d.ts.map +1 -0
  35. package/dist/components/ai-elements/code-block.js +89 -0
  36. package/dist/components/ai-elements/code-block.js.map +1 -0
  37. package/dist/components/ai-elements/confirmation.d.ts +27 -0
  38. package/dist/components/ai-elements/confirmation.d.ts.map +1 -0
  39. package/dist/components/ai-elements/confirmation.js +57 -0
  40. package/dist/components/ai-elements/confirmation.js.map +1 -0
  41. package/dist/components/ai-elements/connection.d.ts +3 -0
  42. package/dist/components/ai-elements/connection.d.ts.map +1 -0
  43. package/dist/components/ai-elements/connection.js +4 -0
  44. package/dist/components/ai-elements/connection.js.map +1 -0
  45. package/dist/components/ai-elements/context.d.ts +33 -0
  46. package/dist/components/ai-elements/context.d.ts.map +1 -0
  47. package/dist/components/ai-elements/context.js +167 -0
  48. package/dist/components/ai-elements/context.js.map +1 -0
  49. package/dist/components/ai-elements/controls.d.ts +5 -0
  50. package/dist/components/ai-elements/controls.d.ts.map +1 -0
  51. package/dist/components/ai-elements/controls.js +6 -0
  52. package/dist/components/ai-elements/controls.js.map +1 -0
  53. package/dist/components/ai-elements/conversation.d.ts +16 -0
  54. package/dist/components/ai-elements/conversation.d.ts.map +1 -0
  55. package/dist/components/ai-elements/conversation.js +18 -0
  56. package/dist/components/ai-elements/conversation.js.map +1 -0
  57. package/dist/components/ai-elements/edge.d.ts +6 -0
  58. package/dist/components/ai-elements/edge.d.ts.map +1 -0
  59. package/dist/components/ai-elements/edge.js +83 -0
  60. package/dist/components/ai-elements/edge.js.map +1 -0
  61. package/dist/components/ai-elements/image.d.ts +7 -0
  62. package/dist/components/ai-elements/image.d.ts.map +1 -0
  63. package/dist/components/ai-elements/image.js +4 -0
  64. package/dist/components/ai-elements/image.js.map +1 -0
  65. package/dist/components/ai-elements/inline-citation.d.ts +39 -0
  66. package/dist/components/ai-elements/inline-citation.d.ts.map +1 -0
  67. package/dist/components/ai-elements/inline-citation.js +62 -0
  68. package/dist/components/ai-elements/inline-citation.js.map +1 -0
  69. package/dist/components/ai-elements/loader.d.ts +6 -0
  70. package/dist/components/ai-elements/loader.d.ts.map +1 -0
  71. package/dist/components/ai-elements/loader.js +5 -0
  72. package/dist/components/ai-elements/loader.js.map +1 -0
  73. package/dist/components/ai-elements/message.d.ts +20 -0
  74. package/dist/components/ai-elements/message.d.ts.map +1 -0
  75. package/dist/components/ai-elements/message.js +26 -0
  76. package/dist/components/ai-elements/message.js.map +1 -0
  77. package/dist/components/ai-elements/node.d.ts +22 -0
  78. package/dist/components/ai-elements/node.d.ts.map +1 -0
  79. package/dist/components/ai-elements/node.js +12 -0
  80. package/dist/components/ai-elements/node.js.map +1 -0
  81. package/dist/components/ai-elements/open-in-chat.d.ts +29 -0
  82. package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -0
  83. package/dist/components/ai-elements/open-in-chat.js +97 -0
  84. package/dist/components/ai-elements/open-in-chat.js.map +1 -0
  85. package/dist/components/ai-elements/panel.d.ts +6 -0
  86. package/dist/components/ai-elements/panel.d.ts.map +1 -0
  87. package/dist/components/ai-elements/panel.js +5 -0
  88. package/dist/components/ai-elements/panel.js.map +1 -0
  89. package/dist/components/ai-elements/plan.d.ts +26 -0
  90. package/dist/components/ai-elements/plan.d.ts.map +1 -0
  91. package/dist/components/ai-elements/plan.js +32 -0
  92. package/dist/components/ai-elements/plan.js.map +1 -0
  93. package/dist/components/ai-elements/prompt-input.d.ts +187 -0
  94. package/dist/components/ai-elements/prompt-input.d.ts.map +1 -0
  95. package/dist/components/ai-elements/prompt-input.js +544 -0
  96. package/dist/components/ai-elements/prompt-input.js.map +1 -0
  97. package/dist/components/ai-elements/queue.d.ts +62 -0
  98. package/dist/components/ai-elements/queue.d.ts.map +1 -0
  99. package/dist/components/ai-elements/queue.js +25 -0
  100. package/dist/components/ai-elements/queue.js.map +1 -0
  101. package/dist/components/ai-elements/reasoning.d.ts +17 -0
  102. package/dist/components/ai-elements/reasoning.d.ts.map +1 -0
  103. package/dist/components/ai-elements/reasoning.js +77 -0
  104. package/dist/components/ai-elements/reasoning.js.map +1 -0
  105. package/dist/components/ai-elements/response.d.ts +6 -0
  106. package/dist/components/ai-elements/response.d.ts.map +1 -0
  107. package/dist/components/ai-elements/response.js +8 -0
  108. package/dist/components/ai-elements/response.js.map +1 -0
  109. package/dist/components/ai-elements/shimmer.d.ts +10 -0
  110. package/dist/components/ai-elements/shimmer.d.ts.map +1 -0
  111. package/dist/components/ai-elements/shimmer.js +19 -0
  112. package/dist/components/ai-elements/shimmer.js.map +1 -0
  113. package/dist/components/ai-elements/sources.d.ts +13 -0
  114. package/dist/components/ai-elements/sources.d.ts.map +1 -0
  115. package/dist/components/ai-elements/sources.js +10 -0
  116. package/dist/components/ai-elements/sources.js.map +1 -0
  117. package/dist/components/ai-elements/suggestion.d.ts +11 -0
  118. package/dist/components/ai-elements/suggestion.d.ts.map +1 -0
  119. package/dist/components/ai-elements/suggestion.js +13 -0
  120. package/dist/components/ai-elements/suggestion.js.map +1 -0
  121. package/dist/components/ai-elements/task.d.ts +15 -0
  122. package/dist/components/ai-elements/task.d.ts.map +1 -0
  123. package/dist/components/ai-elements/task.js +11 -0
  124. package/dist/components/ai-elements/task.js.map +1 -0
  125. package/dist/components/ai-elements/tool.d.ts +24 -0
  126. package/dist/components/ai-elements/tool.d.ts.map +1 -0
  127. package/dist/components/ai-elements/tool.js +47 -0
  128. package/dist/components/ai-elements/tool.js.map +1 -0
  129. package/dist/components/ai-elements/toolbar.d.ts +6 -0
  130. package/dist/components/ai-elements/toolbar.d.ts.map +1 -0
  131. package/dist/components/ai-elements/toolbar.js +5 -0
  132. package/dist/components/ai-elements/toolbar.js.map +1 -0
  133. package/dist/components/ai-elements/web-preview.d.ts +35 -0
  134. package/dist/components/ai-elements/web-preview.d.ts.map +1 -0
  135. package/dist/components/ai-elements/web-preview.js +63 -0
  136. package/dist/components/ai-elements/web-preview.js.map +1 -0
  137. package/dist/components/internal/Chat.d.ts +11 -0
  138. package/dist/components/internal/Chat.d.ts.map +1 -0
  139. package/dist/components/internal/Chat.js +52 -0
  140. package/dist/components/internal/Chat.js.map +1 -0
  141. package/dist/components/internal/Header.d.ts +10 -0
  142. package/dist/components/internal/Header.d.ts.map +1 -0
  143. package/dist/components/internal/Header.js +31 -0
  144. package/dist/components/internal/Header.js.map +1 -0
  145. package/dist/components/internal/InputSection.d.ts +14 -0
  146. package/dist/components/internal/InputSection.d.ts.map +1 -0
  147. package/dist/components/internal/InputSection.js +212 -0
  148. package/dist/components/internal/InputSection.js.map +1 -0
  149. package/dist/components/internal/Schema.d.ts +7 -0
  150. package/dist/components/internal/Schema.d.ts.map +1 -0
  151. package/dist/components/internal/Schema.js +14 -0
  152. package/dist/components/internal/Schema.js.map +1 -0
  153. package/dist/components/internal/WorkbenchProvider.d.ts +11 -0
  154. package/dist/components/internal/WorkbenchProvider.d.ts.map +1 -0
  155. package/dist/components/internal/WorkbenchProvider.js +224 -0
  156. package/dist/components/internal/WorkbenchProvider.js.map +1 -0
  157. package/dist/components/internal/logo.d.ts +2 -0
  158. package/dist/components/internal/logo.d.ts.map +1 -0
  159. package/dist/components/internal/logo.js +5 -0
  160. package/dist/components/internal/logo.js.map +1 -0
  161. package/dist/components/ui/alert.d.ts +10 -0
  162. package/dist/components/ui/alert.d.ts.map +1 -0
  163. package/dist/components/ui/alert.js +25 -0
  164. package/dist/components/ui/alert.js.map +1 -0
  165. package/dist/components/ui/avatar.d.ts +7 -0
  166. package/dist/components/ui/avatar.d.ts.map +1 -0
  167. package/dist/components/ui/avatar.js +14 -0
  168. package/dist/components/ui/avatar.js.map +1 -0
  169. package/dist/components/ui/badge.d.ts +10 -0
  170. package/dist/components/ui/badge.d.ts.map +1 -0
  171. package/dist/components/ui/badge.js +23 -0
  172. package/dist/components/ui/badge.js.map +1 -0
  173. package/dist/components/ui/button.d.ts +3 -4
  174. package/dist/components/ui/button.d.ts.map +1 -1
  175. package/dist/components/ui/button.js.map +1 -1
  176. package/dist/components/ui/card.d.ts +2 -1
  177. package/dist/components/ui/card.d.ts.map +1 -1
  178. package/dist/components/ui/card.js +4 -1
  179. package/dist/components/ui/card.js.map +1 -1
  180. package/dist/components/ui/carousel.d.ts +20 -0
  181. package/dist/components/ui/carousel.d.ts.map +1 -0
  182. package/dist/components/ui/carousel.js +92 -0
  183. package/dist/components/ui/carousel.js.map +1 -0
  184. package/dist/components/ui/checkbox.d.ts +5 -0
  185. package/dist/components/ui/checkbox.d.ts.map +1 -0
  186. package/dist/components/ui/checkbox.js +9 -0
  187. package/dist/components/ui/checkbox.js.map +1 -0
  188. package/dist/components/ui/collapsible.d.ts +6 -0
  189. package/dist/components/ui/collapsible.d.ts.map +1 -0
  190. package/dist/components/ui/collapsible.js +14 -0
  191. package/dist/components/ui/collapsible.js.map +1 -0
  192. package/dist/components/ui/command.d.ts +19 -0
  193. package/dist/components/ui/command.d.ts.map +1 -0
  194. package/dist/components/ui/command.js +34 -0
  195. package/dist/components/ui/command.js.map +1 -0
  196. package/dist/components/ui/dialog.d.ts +16 -0
  197. package/dist/components/ui/dialog.d.ts.map +1 -0
  198. package/dist/components/ui/dialog.js +36 -0
  199. package/dist/components/ui/dialog.js.map +1 -0
  200. package/dist/components/ui/dropdown-menu.d.ts +26 -0
  201. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  202. package/dist/components/ui/dropdown-menu.js +52 -0
  203. package/dist/components/ui/dropdown-menu.js.map +1 -0
  204. package/dist/components/ui/field.d.ts +25 -0
  205. package/dist/components/ui/field.d.ts.map +1 -0
  206. package/dist/components/ui/field.js +74 -0
  207. package/dist/components/ui/field.js.map +1 -0
  208. package/dist/components/ui/form.d.ts +25 -0
  209. package/dist/components/ui/form.d.ts.map +1 -0
  210. package/dist/components/ui/form.js +58 -0
  211. package/dist/components/ui/form.js.map +1 -0
  212. package/dist/components/ui/hover-card.d.ts +7 -0
  213. package/dist/components/ui/hover-card.d.ts.map +1 -0
  214. package/dist/components/ui/hover-card.js +14 -0
  215. package/dist/components/ui/hover-card.js.map +1 -0
  216. package/dist/components/ui/input-group.d.ts +17 -0
  217. package/dist/components/ui/input-group.d.ts.map +1 -0
  218. package/dist/components/ui/input-group.js +64 -0
  219. package/dist/components/ui/input-group.js.map +1 -0
  220. package/dist/components/ui/input.d.ts +1 -2
  221. package/dist/components/ui/input.d.ts.map +1 -1
  222. package/dist/components/ui/input.js +3 -5
  223. package/dist/components/ui/input.js.map +1 -1
  224. package/dist/components/ui/label.d.ts +5 -0
  225. package/dist/components/ui/label.d.ts.map +1 -0
  226. package/dist/components/ui/label.js +9 -0
  227. package/dist/components/ui/label.js.map +1 -0
  228. package/dist/components/ui/popover.d.ts +8 -0
  229. package/dist/components/ui/popover.d.ts.map +1 -0
  230. package/dist/components/ui/popover.js +18 -0
  231. package/dist/components/ui/popover.js.map +1 -0
  232. package/dist/components/ui/progress.d.ts +5 -0
  233. package/dist/components/ui/progress.d.ts.map +1 -0
  234. package/dist/components/ui/progress.js +9 -0
  235. package/dist/components/ui/progress.js.map +1 -0
  236. package/dist/components/ui/resizable-provider.d.ts +15 -0
  237. package/dist/components/ui/resizable-provider.d.ts.map +1 -0
  238. package/dist/components/ui/resizable-provider.js +54 -0
  239. package/dist/components/ui/resizable-provider.js.map +1 -0
  240. package/dist/components/ui/resizable.d.ts +9 -0
  241. package/dist/components/ui/resizable.d.ts.map +1 -0
  242. package/dist/components/ui/resizable.js +16 -0
  243. package/dist/components/ui/resizable.js.map +1 -0
  244. package/dist/components/ui/scroll-area.d.ts +6 -0
  245. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  246. package/dist/components/ui/scroll-area.js +11 -0
  247. package/dist/components/ui/scroll-area.js.map +1 -0
  248. package/dist/components/ui/select.d.ts +16 -0
  249. package/dist/components/ui/select.d.ts.map +1 -0
  250. package/dist/components/ui/select.js +39 -0
  251. package/dist/components/ui/select.js.map +1 -0
  252. package/dist/components/ui/separator.d.ts +5 -0
  253. package/dist/components/ui/separator.d.ts.map +1 -0
  254. package/dist/components/ui/separator.js +9 -0
  255. package/dist/components/ui/separator.js.map +1 -0
  256. package/dist/components/ui/switch.d.ts +5 -0
  257. package/dist/components/ui/switch.d.ts.map +1 -0
  258. package/dist/components/ui/switch.js +8 -0
  259. package/dist/components/ui/switch.js.map +1 -0
  260. package/dist/components/ui/tabs.d.ts +8 -0
  261. package/dist/components/ui/tabs.d.ts.map +1 -0
  262. package/dist/components/ui/tabs.js +17 -0
  263. package/dist/components/ui/tabs.js.map +1 -0
  264. package/dist/components/ui/textarea.d.ts +4 -0
  265. package/dist/components/ui/textarea.d.ts.map +1 -0
  266. package/dist/components/ui/textarea.js +7 -0
  267. package/dist/components/ui/textarea.js.map +1 -0
  268. package/dist/components/ui/theme-provider.d.ts +14 -0
  269. package/dist/components/ui/theme-provider.d.ts.map +1 -0
  270. package/dist/components/ui/theme-provider.js +37 -0
  271. package/dist/components/ui/theme-provider.js.map +1 -0
  272. package/dist/components/ui/theme-toggle.d.ts +2 -0
  273. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  274. package/dist/components/ui/theme-toggle.js +10 -0
  275. package/dist/components/ui/theme-toggle.js.map +1 -0
  276. package/dist/components/ui/toggle.d.ts +10 -0
  277. package/dist/components/ui/toggle.d.ts.map +1 -0
  278. package/dist/components/ui/toggle.js +26 -0
  279. package/dist/components/ui/toggle.js.map +1 -0
  280. package/dist/components/ui/tooltip.d.ts +8 -0
  281. package/dist/components/ui/tooltip.d.ts.map +1 -0
  282. package/dist/components/ui/tooltip.js +17 -0
  283. package/dist/components/ui/tooltip.js.map +1 -0
  284. package/dist/components.d.ts +10 -6
  285. package/dist/components.d.ts.map +1 -1
  286. package/dist/components.js +11 -36
  287. package/dist/components.js.map +1 -1
  288. package/dist/hooks/index.d.ts +6 -0
  289. package/dist/hooks/index.d.ts.map +1 -0
  290. package/dist/hooks/index.js +4 -0
  291. package/dist/hooks/index.js.map +1 -0
  292. package/dist/hooks/useAgentSchemas.d.ts +70 -0
  293. package/dist/hooks/useAgentSchemas.d.ts.map +1 -0
  294. package/dist/hooks/useAgentSchemas.js +90 -0
  295. package/dist/hooks/useAgentSchemas.js.map +1 -0
  296. package/dist/hooks/useWorkbenchSchemas.d.ts +56 -0
  297. package/dist/hooks/useWorkbenchSchemas.d.ts.map +1 -0
  298. package/dist/hooks/useWorkbenchSchemas.js +63 -0
  299. package/dist/hooks/useWorkbenchSchemas.js.map +1 -0
  300. package/dist/hooks/useWorkbenchWebsocket.d.ts +14 -0
  301. package/dist/hooks/useWorkbenchWebsocket.d.ts.map +1 -0
  302. package/dist/hooks/useWorkbenchWebsocket.js +163 -0
  303. package/dist/hooks/useWorkbenchWebsocket.js.map +1 -0
  304. package/dist/index.d.ts +3 -3
  305. package/dist/index.d.ts.map +1 -1
  306. package/dist/index.js +4 -5
  307. package/dist/index.js.map +1 -1
  308. package/dist/server.d.ts +3 -0
  309. package/dist/server.d.ts.map +1 -0
  310. package/dist/server.js +5 -0
  311. package/dist/server.js.map +1 -0
  312. package/dist/styles.css +3423 -196
  313. package/dist/types/config.d.ts +29 -0
  314. package/dist/types/config.d.ts.map +1 -0
  315. package/dist/types/config.js +2 -0
  316. package/dist/types/config.js.map +1 -0
  317. package/dist/types.d.ts +1 -1
  318. package/dist/types.d.ts.map +1 -1
  319. package/dist/workbench.d.ts +1 -2
  320. package/dist/workbench.d.ts.map +1 -1
  321. package/dist/workbench.js +0 -2
  322. package/dist/workbench.js.map +1 -1
  323. package/package.json +50 -7
  324. package/src/components/App.tsx +29 -0
  325. package/src/components/ConnectionStatus.tsx +67 -0
  326. package/src/components/Inline.tsx +16 -0
  327. package/src/components/ai-elements/actions.tsx +60 -0
  328. package/src/components/ai-elements/artifact.tsx +118 -0
  329. package/src/components/ai-elements/branch.tsx +187 -0
  330. package/src/components/ai-elements/canvas.tsx +24 -0
  331. package/src/components/ai-elements/chain-of-thought.tsx +198 -0
  332. package/src/components/ai-elements/code-block.tsx +175 -0
  333. package/src/components/ai-elements/confirmation.tsx +119 -0
  334. package/src/components/ai-elements/connection.tsx +16 -0
  335. package/src/components/ai-elements/context.tsx +357 -0
  336. package/src/components/ai-elements/controls.tsx +18 -0
  337. package/src/components/ai-elements/conversation.tsx +90 -0
  338. package/src/components/ai-elements/edge.tsx +131 -0
  339. package/src/components/ai-elements/image.tsx +16 -0
  340. package/src/components/ai-elements/inline-citation.tsx +246 -0
  341. package/src/components/ai-elements/loader.tsx +88 -0
  342. package/src/components/ai-elements/message.tsx +63 -0
  343. package/src/components/ai-elements/node.tsx +66 -0
  344. package/src/components/ai-elements/open-in-chat.tsx +333 -0
  345. package/src/components/ai-elements/panel.tsx +12 -0
  346. package/src/components/ai-elements/plan.tsx +123 -0
  347. package/src/components/ai-elements/prompt-input.tsx +1203 -0
  348. package/src/components/ai-elements/queue.tsx +231 -0
  349. package/src/components/ai-elements/reasoning.tsx +163 -0
  350. package/src/components/ai-elements/response.tsx +19 -0
  351. package/src/components/ai-elements/shimmer.tsx +53 -0
  352. package/src/components/ai-elements/sources.tsx +53 -0
  353. package/src/components/ai-elements/suggestion.tsx +47 -0
  354. package/src/components/ai-elements/task.tsx +64 -0
  355. package/src/components/ai-elements/tool.tsx +136 -0
  356. package/src/components/ai-elements/toolbar.tsx +13 -0
  357. package/src/components/ai-elements/web-preview.tsx +238 -0
  358. package/src/components/internal/Chat.tsx +183 -0
  359. package/src/components/internal/Header.tsx +77 -0
  360. package/src/components/internal/InputSection.tsx +427 -0
  361. package/src/components/internal/Schema.tsx +111 -0
  362. package/src/components/internal/WorkbenchProvider.tsx +265 -0
  363. package/src/components/internal/logo.tsx +11 -0
  364. package/src/components/ui/alert.tsx +60 -0
  365. package/src/components/ui/avatar.tsx +42 -0
  366. package/src/components/ui/badge.tsx +40 -0
  367. package/src/components/ui/button.tsx +10 -5
  368. package/src/components/ui/card.tsx +4 -1
  369. package/src/components/ui/carousel.tsx +234 -0
  370. package/src/components/ui/checkbox.tsx +27 -0
  371. package/src/components/ui/collapsible.tsx +21 -0
  372. package/src/components/ui/command.tsx +153 -0
  373. package/src/components/ui/dialog.tsx +127 -0
  374. package/src/components/ui/dropdown-menu.tsx +228 -0
  375. package/src/components/ui/field.tsx +234 -0
  376. package/src/components/ui/form.tsx +154 -0
  377. package/src/components/ui/hover-card.tsx +36 -0
  378. package/src/components/ui/input-group.tsx +158 -0
  379. package/src/components/ui/input.tsx +16 -18
  380. package/src/components/ui/label.tsx +21 -0
  381. package/src/components/ui/popover.tsx +42 -0
  382. package/src/components/ui/progress.tsx +28 -0
  383. package/src/components/ui/resizable-provider.tsx +83 -0
  384. package/src/components/ui/resizable.tsx +54 -0
  385. package/src/components/ui/scroll-area.tsx +54 -0
  386. package/src/components/ui/select.tsx +172 -0
  387. package/src/components/ui/separator.tsx +28 -0
  388. package/src/components/ui/switch.tsx +26 -0
  389. package/src/components/ui/tabs.tsx +52 -0
  390. package/src/components/ui/textarea.tsx +18 -0
  391. package/src/components/ui/theme-provider.tsx +71 -0
  392. package/src/components/ui/theme-toggle.tsx +30 -0
  393. package/src/components/ui/toggle.tsx +44 -0
  394. package/src/components/ui/tooltip.tsx +55 -0
  395. package/src/components.tsx +28 -74
  396. package/src/hooks/index.ts +19 -0
  397. package/src/hooks/useAgentSchemas.ts +144 -0
  398. package/src/hooks/useWorkbenchSchemas.ts +69 -0
  399. package/src/hooks/useWorkbenchWebsocket.ts +220 -0
  400. package/src/index.ts +5 -11
  401. package/src/server.ts +6 -0
  402. package/src/styles.css +214 -59
  403. package/src/types/config.ts +34 -0
  404. package/src/types.ts +1 -1
  405. package/src/workbench.ts +1 -4
@@ -0,0 +1,198 @@
1
+ 'use client';
2
+
3
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
4
+ import { Badge } from '../ui/badge';
5
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../ui/collapsible';
6
+ import { cn } from '../../lib/utils';
7
+ import { BrainIcon, ChevronDownIcon, DotIcon, type LucideIcon } from 'lucide-react';
8
+ import type { ComponentProps } from 'react';
9
+ import { createContext, memo, useContext, useMemo } from 'react';
10
+
11
+ type ChainOfThoughtContextValue = {
12
+ isOpen: boolean;
13
+ setIsOpen: (open: boolean) => void;
14
+ };
15
+
16
+ const ChainOfThoughtContext = createContext<ChainOfThoughtContextValue | null>(null);
17
+
18
+ const useChainOfThought = () => {
19
+ const context = useContext(ChainOfThoughtContext);
20
+ if (!context) {
21
+ throw new Error('ChainOfThought components must be used within ChainOfThought');
22
+ }
23
+ return context;
24
+ };
25
+
26
+ export type ChainOfThoughtProps = ComponentProps<'div'> & {
27
+ open?: boolean;
28
+ defaultOpen?: boolean;
29
+ onOpenChange?: (open: boolean) => void;
30
+ };
31
+
32
+ export const ChainOfThought = memo(
33
+ ({
34
+ className,
35
+ open,
36
+ defaultOpen = false,
37
+ onOpenChange,
38
+ children,
39
+ ...props
40
+ }: ChainOfThoughtProps) => {
41
+ const [isOpen, setIsOpen] = useControllableState({
42
+ prop: open,
43
+ defaultProp: defaultOpen,
44
+ onChange: onOpenChange,
45
+ });
46
+
47
+ const chainOfThoughtContext = useMemo(() => ({ isOpen, setIsOpen }), [isOpen, setIsOpen]);
48
+
49
+ return (
50
+ <ChainOfThoughtContext.Provider value={chainOfThoughtContext}>
51
+ <div className={cn('not-prose max-w-prose space-y-4', className)} {...props}>
52
+ {children}
53
+ </div>
54
+ </ChainOfThoughtContext.Provider>
55
+ );
56
+ }
57
+ );
58
+
59
+ export type ChainOfThoughtHeaderProps = ComponentProps<typeof CollapsibleTrigger>;
60
+
61
+ export const ChainOfThoughtHeader = memo(
62
+ ({ className, children, ...props }: ChainOfThoughtHeaderProps) => {
63
+ const { isOpen, setIsOpen } = useChainOfThought();
64
+
65
+ return (
66
+ <Collapsible onOpenChange={setIsOpen} open={isOpen}>
67
+ <CollapsibleTrigger
68
+ className={cn(
69
+ 'flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground',
70
+ className
71
+ )}
72
+ {...props}
73
+ >
74
+ <BrainIcon className="size-4" />
75
+ <span className="flex-1 text-left">{children ?? 'Chain of Thought'}</span>
76
+ <ChevronDownIcon
77
+ className={cn('size-4 transition-transform', isOpen ? 'rotate-180' : 'rotate-0')}
78
+ />
79
+ </CollapsibleTrigger>
80
+ </Collapsible>
81
+ );
82
+ }
83
+ );
84
+
85
+ export type ChainOfThoughtStepProps = ComponentProps<'div'> & {
86
+ icon?: LucideIcon;
87
+ label: string;
88
+ description?: string;
89
+ status?: 'complete' | 'active' | 'pending';
90
+ };
91
+
92
+ export const ChainOfThoughtStep = memo(
93
+ ({
94
+ className,
95
+ icon: Icon = DotIcon,
96
+ label,
97
+ description,
98
+ status = 'complete',
99
+ children,
100
+ ...props
101
+ }: ChainOfThoughtStepProps) => {
102
+ const statusStyles = {
103
+ complete: 'text-muted-foreground',
104
+ active: 'text-foreground',
105
+ pending: 'text-muted-foreground/50',
106
+ };
107
+
108
+ return (
109
+ <div
110
+ className={cn(
111
+ 'flex gap-2 text-sm',
112
+ statusStyles[status],
113
+ 'fade-in-0 slide-in-from-top-2 animate-in',
114
+ className
115
+ )}
116
+ {...props}
117
+ >
118
+ <div className="relative mt-0.5">
119
+ <Icon className="size-4" />
120
+ <div className="-mx-px absolute top-7 bottom-0 left-1/2 w-px bg-border" />
121
+ </div>
122
+ <div className="flex-1 space-y-2">
123
+ <div>{label}</div>
124
+ {description && <div className="text-muted-foreground text-xs">{description}</div>}
125
+ {children}
126
+ </div>
127
+ </div>
128
+ );
129
+ }
130
+ );
131
+
132
+ export type ChainOfThoughtSearchResultsProps = ComponentProps<'div'>;
133
+
134
+ export const ChainOfThoughtSearchResults = memo(
135
+ ({ className, ...props }: ChainOfThoughtSearchResultsProps) => (
136
+ <div className={cn('flex items-center gap-2', className)} {...props} />
137
+ )
138
+ );
139
+
140
+ export type ChainOfThoughtSearchResultProps = ComponentProps<typeof Badge>;
141
+
142
+ export const ChainOfThoughtSearchResult = memo(
143
+ ({ className, children, ...props }: ChainOfThoughtSearchResultProps) => (
144
+ <Badge
145
+ className={cn('gap-1 px-2 py-0.5 font-normal text-xs', className)}
146
+ variant="secondary"
147
+ {...props}
148
+ >
149
+ {children}
150
+ </Badge>
151
+ )
152
+ );
153
+
154
+ export type ChainOfThoughtContentProps = ComponentProps<typeof CollapsibleContent>;
155
+
156
+ export const ChainOfThoughtContent = memo(
157
+ ({ className, children, ...props }: ChainOfThoughtContentProps) => {
158
+ const { isOpen } = useChainOfThought();
159
+
160
+ return (
161
+ <Collapsible open={isOpen}>
162
+ <CollapsibleContent
163
+ className={cn(
164
+ 'mt-2 space-y-3',
165
+ 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',
166
+ className
167
+ )}
168
+ {...props}
169
+ >
170
+ {children}
171
+ </CollapsibleContent>
172
+ </Collapsible>
173
+ );
174
+ }
175
+ );
176
+
177
+ export type ChainOfThoughtImageProps = ComponentProps<'div'> & {
178
+ caption?: string;
179
+ };
180
+
181
+ export const ChainOfThoughtImage = memo(
182
+ ({ className, children, caption, ...props }: ChainOfThoughtImageProps) => (
183
+ <div className={cn('mt-2 space-y-2', className)} {...props}>
184
+ <div className="relative flex max-h-[22rem] items-center justify-center overflow-hidden rounded-lg bg-muted p-3">
185
+ {children}
186
+ </div>
187
+ {caption && <p className="text-muted-foreground text-xs">{caption}</p>}
188
+ </div>
189
+ )
190
+ );
191
+
192
+ ChainOfThought.displayName = 'ChainOfThought';
193
+ ChainOfThoughtHeader.displayName = 'ChainOfThoughtHeader';
194
+ ChainOfThoughtStep.displayName = 'ChainOfThoughtStep';
195
+ ChainOfThoughtSearchResults.displayName = 'ChainOfThoughtSearchResults';
196
+ ChainOfThoughtSearchResult.displayName = 'ChainOfThoughtSearchResult';
197
+ ChainOfThoughtContent.displayName = 'ChainOfThoughtContent';
198
+ ChainOfThoughtImage.displayName = 'ChainOfThoughtImage';
@@ -0,0 +1,175 @@
1
+ 'use client';
2
+
3
+ import { Button } from '../ui/button';
4
+ import { cn } from '../../lib/utils';
5
+ import type { Element } from 'hast';
6
+ import { CheckIcon, CopyIcon } from 'lucide-react';
7
+ import {
8
+ type ComponentProps,
9
+ createContext,
10
+ type HTMLAttributes,
11
+ useContext,
12
+ useEffect,
13
+ useRef,
14
+ useState,
15
+ } from 'react';
16
+ import { type BundledLanguage, codeToHtml, type ShikiTransformer } from 'shiki';
17
+
18
+ type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {
19
+ code: string;
20
+ language: BundledLanguage;
21
+ showLineNumbers?: boolean;
22
+ };
23
+
24
+ type CodeBlockContextType = {
25
+ code: string;
26
+ };
27
+
28
+ const CodeBlockContext = createContext<CodeBlockContextType>({
29
+ code: '',
30
+ });
31
+
32
+ const lineNumberTransformer: ShikiTransformer = {
33
+ name: 'line-numbers',
34
+ line(node: Element, line: number) {
35
+ node.children.unshift({
36
+ type: 'element',
37
+ tagName: 'span',
38
+ properties: {
39
+ className: [
40
+ 'inline-block',
41
+ 'min-w-10',
42
+ 'mr-4',
43
+ 'text-right',
44
+ 'select-none',
45
+ 'text-muted-foreground',
46
+ ],
47
+ },
48
+ children: [{ type: 'text', value: String(line) }],
49
+ });
50
+ },
51
+ };
52
+
53
+ export async function highlightCode(
54
+ code: string,
55
+ language: BundledLanguage,
56
+ showLineNumbers = false
57
+ ) {
58
+ const transformers: ShikiTransformer[] = showLineNumbers ? [lineNumberTransformer] : [];
59
+
60
+ return await Promise.all([
61
+ codeToHtml(code, {
62
+ lang: language,
63
+ theme: 'one-light',
64
+ transformers,
65
+ }),
66
+ codeToHtml(code, {
67
+ lang: language,
68
+ theme: 'one-dark-pro',
69
+ transformers,
70
+ }),
71
+ ]);
72
+ }
73
+
74
+ export const CodeBlock = ({
75
+ code,
76
+ language,
77
+ showLineNumbers = false,
78
+ className,
79
+ children,
80
+ ...props
81
+ }: CodeBlockProps) => {
82
+ const [html, setHtml] = useState<string>('');
83
+ const [darkHtml, setDarkHtml] = useState<string>('');
84
+ const mounted = useRef(false);
85
+
86
+ useEffect(() => {
87
+ highlightCode(code, language, showLineNumbers).then(([light, dark]) => {
88
+ if (!mounted.current) {
89
+ setHtml(light);
90
+ setDarkHtml(dark);
91
+ mounted.current = true;
92
+ }
93
+ });
94
+
95
+ return () => {
96
+ mounted.current = false;
97
+ };
98
+ }, [code, language, showLineNumbers]);
99
+
100
+ return (
101
+ <CodeBlockContext.Provider value={{ code }}>
102
+ <div
103
+ className={cn(
104
+ 'group relative w-full overflow-hidden rounded-md border bg-background text-foreground',
105
+ className
106
+ )}
107
+ {...props}
108
+ >
109
+ <div className="relative">
110
+ <div
111
+ className="overflow-hidden dark:hidden [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm"
112
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: "this is needed."
113
+ dangerouslySetInnerHTML={{ __html: html }}
114
+ />
115
+ <div
116
+ className="hidden overflow-hidden dark:block [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm"
117
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: "this is needed."
118
+ dangerouslySetInnerHTML={{ __html: darkHtml }}
119
+ />
120
+ {children && (
121
+ <div className="absolute top-2 right-2 flex items-center gap-2">{children}</div>
122
+ )}
123
+ </div>
124
+ </div>
125
+ </CodeBlockContext.Provider>
126
+ );
127
+ };
128
+
129
+ export type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {
130
+ onCopy?: () => void;
131
+ onError?: (error: Error) => void;
132
+ timeout?: number;
133
+ };
134
+
135
+ export const CodeBlockCopyButton = ({
136
+ onCopy,
137
+ onError,
138
+ timeout = 2000,
139
+ children,
140
+ className,
141
+ ...props
142
+ }: CodeBlockCopyButtonProps) => {
143
+ const [isCopied, setIsCopied] = useState(false);
144
+ const { code } = useContext(CodeBlockContext);
145
+
146
+ const copyToClipboard = async () => {
147
+ if (typeof window === 'undefined' || !navigator?.clipboard?.writeText) {
148
+ onError?.(new Error('Clipboard API not available'));
149
+ return;
150
+ }
151
+
152
+ try {
153
+ await navigator.clipboard.writeText(code);
154
+ setIsCopied(true);
155
+ onCopy?.();
156
+ setTimeout(() => setIsCopied(false), timeout);
157
+ } catch (error) {
158
+ onError?.(error as Error);
159
+ }
160
+ };
161
+
162
+ const Icon = isCopied ? CheckIcon : CopyIcon;
163
+
164
+ return (
165
+ <Button
166
+ className={cn('shrink-0', className)}
167
+ onClick={copyToClipboard}
168
+ size="icon"
169
+ variant="ghost"
170
+ {...props}
171
+ >
172
+ {children ?? <Icon size={14} />}
173
+ </Button>
174
+ );
175
+ };
@@ -0,0 +1,119 @@
1
+ 'use client';
2
+
3
+ import { Alert, AlertDescription } from '../ui/alert';
4
+ import { Button } from '../ui/button';
5
+ import { cn } from '../../lib/utils';
6
+ import type { ToolUIPart } from 'ai';
7
+ import { type ComponentProps, createContext, type ReactNode, useContext } from 'react';
8
+
9
+ type ConfirmationContextValue = {
10
+ approval: any;
11
+ state: any;
12
+ };
13
+
14
+ const ConfirmationContext = createContext<ConfirmationContextValue | null>(null);
15
+
16
+ const useConfirmation = () => {
17
+ const context = useContext(ConfirmationContext);
18
+
19
+ if (!context) {
20
+ throw new Error('Confirmation components must be used within Confirmation');
21
+ }
22
+
23
+ return context;
24
+ };
25
+
26
+ export type ConfirmationProps = ComponentProps<typeof Alert> & {
27
+ approval?: any;
28
+ state: any;
29
+ };
30
+
31
+ export const Confirmation = ({ className, approval, state, ...props }: ConfirmationProps) => {
32
+ if (!approval || state === 'input-streaming' || state === 'input-available') {
33
+ return null;
34
+ }
35
+
36
+ return (
37
+ <ConfirmationContext.Provider value={{ approval, state }}>
38
+ <Alert className={cn('flex flex-col gap-2', className)} {...props} />
39
+ </ConfirmationContext.Provider>
40
+ );
41
+ };
42
+
43
+ export type ConfirmationTitleProps = ComponentProps<typeof AlertDescription>;
44
+
45
+ export const ConfirmationTitle = ({ className, ...props }: ConfirmationTitleProps) => (
46
+ <AlertDescription className={cn('inline', className)} {...props} />
47
+ );
48
+
49
+ export type ConfirmationRequestProps = {
50
+ children?: ReactNode;
51
+ };
52
+
53
+ export const ConfirmationRequest = ({ children }: ConfirmationRequestProps) => {
54
+ const { state } = useConfirmation();
55
+
56
+ // Only show when approval is requested
57
+ if (state !== 'approval-requested') {
58
+ return null;
59
+ }
60
+
61
+ return children;
62
+ };
63
+
64
+ export type ConfirmationAcceptedProps = {
65
+ children?: ReactNode;
66
+ };
67
+
68
+ export const ConfirmationAccepted = ({ children }: ConfirmationAcceptedProps) => {
69
+ const { approval, state } = useConfirmation();
70
+
71
+ // Only show when approved and in response states
72
+ if (
73
+ !approval?.approved ||
74
+ (state !== 'approval-responded' && state !== 'output-denied' && state !== 'output-available')
75
+ ) {
76
+ return null;
77
+ }
78
+
79
+ return children;
80
+ };
81
+
82
+ export type ConfirmationRejectedProps = {
83
+ children?: ReactNode;
84
+ };
85
+
86
+ export const ConfirmationRejected = ({ children }: ConfirmationRejectedProps) => {
87
+ const { approval, state } = useConfirmation();
88
+
89
+ // Only show when rejected and in response states
90
+ if (
91
+ approval?.approved !== false ||
92
+ (state !== 'approval-responded' && state !== 'output-denied' && state !== 'output-available')
93
+ ) {
94
+ return null;
95
+ }
96
+
97
+ return children;
98
+ };
99
+
100
+ export type ConfirmationActionsProps = ComponentProps<'div'>;
101
+
102
+ export const ConfirmationActions = ({ className, ...props }: ConfirmationActionsProps) => {
103
+ const { state } = useConfirmation();
104
+
105
+ // Only show when approval is requested
106
+ if (state !== 'approval-requested') {
107
+ return null;
108
+ }
109
+
110
+ return (
111
+ <div className={cn('flex items-center justify-end gap-2 self-end', className)} {...props} />
112
+ );
113
+ };
114
+
115
+ export type ConfirmationActionProps = ComponentProps<typeof Button>;
116
+
117
+ export const ConfirmationAction = (props: ConfirmationActionProps) => (
118
+ <Button className="h-8 px-3 text-sm" type="button" {...props} />
119
+ );
@@ -0,0 +1,16 @@
1
+ import type { ConnectionLineComponent } from '@xyflow/react';
2
+
3
+ const HALF = 0.5;
4
+
5
+ export const Connection: ConnectionLineComponent = ({ fromX, fromY, toX, toY }) => (
6
+ <g>
7
+ <path
8
+ className="animated"
9
+ d={`M${fromX},${fromY} C ${fromX + (toX - fromX) * HALF},${fromY} ${fromX + (toX - fromX) * HALF},${toY} ${toX},${toY}`}
10
+ fill="none"
11
+ stroke="var(--color-ring)"
12
+ strokeWidth={1}
13
+ />
14
+ <circle cx={toX} cy={toY} fill="#fff" r={3} stroke="var(--color-ring)" strokeWidth={1} />
15
+ </g>
16
+ );