@agentuity/workbench 0.0.64 → 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,55 @@
1
+ import * as React from 'react';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+
4
+ import { cn } from '../../lib/utils';
5
+
6
+ function TooltipProvider({
7
+ delayDuration = 0,
8
+ ...props
9
+ }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {
10
+ return (
11
+ <TooltipPrimitive.Provider
12
+ data-slot="tooltip-provider"
13
+ delayDuration={delayDuration}
14
+ {...props}
15
+ />
16
+ );
17
+ }
18
+
19
+ function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {
20
+ return (
21
+ <TooltipProvider>
22
+ <TooltipPrimitive.Root data-slot="tooltip" {...props} />
23
+ </TooltipProvider>
24
+ );
25
+ }
26
+
27
+ function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {
28
+ return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />;
29
+ }
30
+
31
+ function TooltipContent({
32
+ className,
33
+ sideOffset = 0,
34
+ children,
35
+ ...props
36
+ }: React.ComponentProps<typeof TooltipPrimitive.Content>) {
37
+ return (
38
+ <TooltipPrimitive.Portal>
39
+ <TooltipPrimitive.Content
40
+ data-slot="tooltip-content"
41
+ sideOffset={sideOffset}
42
+ className={cn(
43
+ 'bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',
44
+ className
45
+ )}
46
+ {...props}
47
+ >
48
+ {children}
49
+ <TooltipPrimitive.Arrow className="bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" />
50
+ </TooltipPrimitive.Content>
51
+ </TooltipPrimitive.Portal>
52
+ );
53
+ }
54
+
55
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
@@ -1,74 +1,28 @@
1
- import React, { useState, useContext } from 'react';
2
- import { AgentuityContext } from '@agentuity/react';
3
- import type { WorkbenchInstance } from './types';
4
- import { Button } from './components/ui/button';
5
- import {
6
- Card,
7
- CardContent,
8
- CardDescription,
9
- CardFooter,
10
- CardHeader,
11
- CardTitle,
12
- } from './components/ui/card';
13
- import { cn } from './lib/utils';
14
-
15
- export interface WorkbenchProps {
16
- workbench: WorkbenchInstance;
17
- className?: string;
18
- }
19
-
20
- export function Workbench({ workbench, className }: WorkbenchProps) {
21
- const { baseUrl } = useContext(AgentuityContext);
22
- const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle');
23
- const [response, setResponse] = useState<unknown>(null);
24
-
25
- const handleApiCall = async () => {
26
- setStatus('loading');
27
- try {
28
- const url = `${baseUrl}/api`;
29
- const res = await fetch(url, {
30
- method: 'GET',
31
- headers: {
32
- 'Content-Type': 'application/json',
33
- ...workbench.config.headers,
34
- },
35
- });
36
-
37
- if (!res.ok) {
38
- throw new Error(`HTTP ${res.status}: ${res.statusText}`);
39
- }
40
-
41
- const data = await res.json();
42
- setResponse(data);
43
- setStatus('success');
44
- } catch (error) {
45
- console.error('API call failed:', error);
46
- setResponse({ error: error instanceof Error ? error.message : 'Unknown error' });
47
- setStatus('error');
48
- }
49
- };
50
-
51
- return (
52
- <div className={cn('p-8', className)}>
53
- <Card>
54
- <CardHeader>
55
- <CardTitle>Workbench</CardTitle>
56
- <CardDescription>Route: {workbench.config.route}</CardDescription>
57
- </CardHeader>
58
-
59
- <CardContent className="space-y-4">
60
- <Button onClick={handleApiCall} disabled={status === 'loading'}>
61
- {status === 'loading' ? 'Loading...' : 'Hit API'}
62
- </Button>
63
- </CardContent>
64
-
65
- <CardFooter className="flex-col items-start space-y-2">
66
- <h4 className="font-semibold">Response:</h4>
67
- <pre className="bg-muted p-4 rounded-md overflow-auto w-full text-sm">
68
- {response ? JSON.stringify(response, null, 2) : 'No response yet'}
69
- </pre>
70
- </CardFooter>
71
- </Card>
72
- </div>
73
- );
74
- }
1
+ // Export 4 main AI elements/components
2
+ export { Chat } from './components/internal/Chat';
3
+ export { Header } from './components/internal/Header';
4
+ export { App } from './components/App';
5
+ export { Inline } from './components/Inline';
6
+ export { ConnectionStatus } from './components/ConnectionStatus';
7
+
8
+ // Export provider
9
+ export { WorkbenchProvider } from './components/internal/WorkbenchProvider';
10
+
11
+ // Export hooks
12
+ export { useAgentSchemas, useAgentSchema } from './hooks/useAgentSchemas';
13
+ export {
14
+ useWorkbenchSchemas,
15
+ useWorkbenchAgentSchema,
16
+ useWorkbenchAllAgentSchemas,
17
+ } from './hooks/useWorkbenchSchemas';
18
+
19
+ export type {
20
+ AgentSchema,
21
+ AgentMetadata,
22
+ AgentSchemaData,
23
+ AgentSchemasResponse,
24
+ UseAgentSchemasOptions,
25
+ UseAgentSchemasResult,
26
+ } from './hooks/useAgentSchemas';
27
+
28
+ export type { ConnectionStatus as ConnectionStatusType } from './types/config';
@@ -0,0 +1,19 @@
1
+ export { useAgentSchemas, useAgentSchema } from './useAgentSchemas';
2
+ export {
3
+ useWorkbenchSchemas,
4
+ useWorkbenchAgentSchema,
5
+ useWorkbenchAllAgentSchemas,
6
+ } from './useWorkbenchSchemas';
7
+ export { useWorkbenchWebsocket } from './useWorkbenchWebsocket';
8
+ export type {
9
+ AgentSchema,
10
+ AgentMetadata,
11
+ AgentSchemaData,
12
+ AgentSchemasResponse,
13
+ UseAgentSchemasOptions,
14
+ UseAgentSchemasResult,
15
+ } from './useAgentSchemas';
16
+ export type {
17
+ UseWorkbenchWebsocketOptions,
18
+ UseWorkbenchWebsocketResult,
19
+ } from './useWorkbenchWebsocket';
@@ -0,0 +1,144 @@
1
+ import { JSONSchema7 } from 'ai';
2
+ import { useState, useEffect, useCallback } from 'react';
3
+
4
+ export interface AgentSchema {
5
+ input?: {
6
+ code?: string;
7
+ json?: JSONSchema7;
8
+ };
9
+ output?: {
10
+ code?: string;
11
+ json?: string;
12
+ };
13
+ }
14
+
15
+ export interface AgentMetadata {
16
+ id: string;
17
+ name: string;
18
+ description?: string;
19
+ version?: string;
20
+ filename?: string;
21
+ identifier?: string;
22
+ }
23
+
24
+ export interface AgentSchemaData {
25
+ schema: AgentSchema;
26
+ metadata: AgentMetadata;
27
+ }
28
+
29
+ export interface AgentSchemasResponse {
30
+ agents: Record<string, AgentSchemaData>;
31
+ }
32
+
33
+ export interface UseAgentSchemasOptions {
34
+ baseUrl?: string;
35
+ apiKey?: string;
36
+ enabled?: boolean;
37
+ }
38
+
39
+ export interface UseAgentSchemasResult {
40
+ data: AgentSchemasResponse | null;
41
+ isLoading: boolean;
42
+ error: Error | null;
43
+ refetch: () => void;
44
+ }
45
+
46
+ /**
47
+ * React hook for fetching agent schemas from the workbench metadata endpoint
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * const { data, isLoading, error, refetch } = useAgentSchemas({
52
+ * baseUrl: 'http://localhost:3000',
53
+ * apiKey: 'your-api-key', // optional
54
+ * enabled: true
55
+ * });
56
+ *
57
+ * if (isLoading) return <div>Loading schemas...</div>;
58
+ * if (error) return <div>Error: {error.message}</div>;
59
+ * if (data) {
60
+ * Object.entries(data.agents).forEach(([name, agentData]) => {
61
+ * console.log(`Agent ${name}:`, agentData.schema);
62
+ * });
63
+ * }
64
+ * ```
65
+ */
66
+ export function useAgentSchemas(options: UseAgentSchemasOptions = {}): UseAgentSchemasResult {
67
+ const { baseUrl = '', apiKey, enabled = true } = options;
68
+
69
+ const [data, setData] = useState<AgentSchemasResponse | null>(null);
70
+ const [isLoading, setIsLoading] = useState(false);
71
+ const [error, setError] = useState<Error | null>(null);
72
+
73
+ const fetchSchemas = useCallback(async () => {
74
+ if (!enabled) return;
75
+
76
+ setIsLoading(true);
77
+ setError(null);
78
+
79
+ try {
80
+ const url = `${baseUrl}/_agentuity/workbench/metadata.json`;
81
+ const headers: HeadersInit = {
82
+ 'Content-Type': 'application/json',
83
+ };
84
+
85
+ if (apiKey) {
86
+ headers['Authorization'] = `Bearer ${apiKey}`;
87
+ }
88
+
89
+ const response = await fetch(url, {
90
+ method: 'GET',
91
+ headers,
92
+ });
93
+
94
+ if (!response.ok) {
95
+ if (response.status === 401) {
96
+ throw new Error('Unauthorized: Invalid or missing API key');
97
+ }
98
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
99
+ }
100
+
101
+ const result = (await response.json()) as AgentSchemasResponse;
102
+ setData(result);
103
+ } catch (err) {
104
+ const error = err instanceof Error ? err : new Error('Unknown error occurred');
105
+ setError(error);
106
+ console.error('Failed to fetch agent schemas:', error);
107
+ } finally {
108
+ setIsLoading(false);
109
+ }
110
+ }, [baseUrl, apiKey, enabled]);
111
+
112
+ const refetch = useCallback(() => {
113
+ void fetchSchemas();
114
+ }, [fetchSchemas]);
115
+
116
+ useEffect(() => {
117
+ void fetchSchemas();
118
+ }, [fetchSchemas]);
119
+
120
+ return {
121
+ data,
122
+ isLoading,
123
+ error,
124
+ refetch,
125
+ };
126
+ }
127
+
128
+ /**
129
+ * Helper hook to get a specific agent's schema by name
130
+ */
131
+ export function useAgentSchema(agentName: string, options: UseAgentSchemasOptions = {}) {
132
+ const { data, isLoading, error, refetch } = useAgentSchemas(options);
133
+
134
+ const agentData = data?.agents[agentName] || null;
135
+
136
+ return {
137
+ data: agentData,
138
+ isLoading,
139
+ error,
140
+ refetch,
141
+ schema: agentData?.schema || null,
142
+ metadata: agentData?.metadata || null,
143
+ };
144
+ }
@@ -0,0 +1,69 @@
1
+ import { useWorkbench } from '../components/internal/WorkbenchProvider';
2
+ /**
3
+ * Hook to access agent schemas from the WorkbenchProvider context
4
+ * This is preferred over using useAgentSchemas directly in components
5
+ * since the provider manages the schema data centrally
6
+ */
7
+ export function useWorkbenchSchemas() {
8
+ const { schemas, schemasLoading, schemasError, refetchSchemas } = useWorkbench();
9
+
10
+ return {
11
+ /** Raw schema data from the API */
12
+ schemas,
13
+ /** Whether schemas are currently loading */
14
+ isLoading: schemasLoading,
15
+ /** Any error that occurred while fetching schemas */
16
+ error: schemasError,
17
+ /** Function to refetch schemas from the API */
18
+ refetch: refetchSchemas,
19
+ /** Array of agent names available in schemas */
20
+ agentNames: schemas ? Object.keys(schemas.agents) : [],
21
+ /** Number of agents available */
22
+ agentCount: schemas ? Object.keys(schemas.agents).length : 0,
23
+ };
24
+ }
25
+
26
+ /**
27
+ * Hook to get a specific agent's schema by name
28
+ */
29
+ export function useWorkbenchAgentSchema(agentName: string) {
30
+ const { schemas } = useWorkbench();
31
+
32
+ const agentData = schemas?.agents[agentName] || null;
33
+
34
+ return {
35
+ /** Agent schema data if found */
36
+ data: agentData,
37
+ /** Input schema for the agent */
38
+ inputSchema: agentData?.schema.input || null,
39
+ /** Output schema for the agent */
40
+ outputSchema: agentData?.schema.output || null,
41
+ /** Agent metadata */
42
+ metadata: agentData?.metadata || null,
43
+ /** Whether the agent exists in the current schemas */
44
+ exists: !!agentData,
45
+ };
46
+ }
47
+
48
+ /**
49
+ * Hook to get all agent schemas as an array
50
+ */
51
+ export function useWorkbenchAllAgentSchemas() {
52
+ const { schemas } = useWorkbench();
53
+
54
+ const allAgents = schemas
55
+ ? Object.entries(schemas.agents).map(([name, agentData]) => ({
56
+ name,
57
+ ...agentData,
58
+ }))
59
+ : [];
60
+
61
+ return {
62
+ /** Array of all agent schema data */
63
+ agents: allAgents,
64
+ /** Whether any schemas are available */
65
+ hasSchemas: allAgents.length > 0,
66
+ /** Count of available schemas */
67
+ count: allAgents.length,
68
+ };
69
+ }
@@ -0,0 +1,220 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+
3
+ interface ReconnectOptions {
4
+ onReconnect: () => void;
5
+ threshold?: number;
6
+ baseDelay?: number;
7
+ factor?: number;
8
+ maxDelay?: number;
9
+ jitter?: number;
10
+ enabled?: () => boolean;
11
+ }
12
+
13
+ interface ReconnectManager {
14
+ recordFailure: () => { scheduled: boolean; delay: number | null };
15
+ recordSuccess: () => void;
16
+ cancel: () => void;
17
+ reset: () => void;
18
+ dispose: () => void;
19
+ getAttempts: () => number;
20
+ }
21
+
22
+ function createReconnectManager(opts: ReconnectOptions): ReconnectManager {
23
+ let attempts = 0;
24
+ let timer: ReturnType<typeof setTimeout> | null = null;
25
+
26
+ const cancel = () => {
27
+ if (timer) {
28
+ clearTimeout(timer);
29
+ timer = null;
30
+ }
31
+ };
32
+
33
+ const reset = () => {
34
+ attempts = 0;
35
+ cancel();
36
+ };
37
+
38
+ const recordSuccess = () => reset();
39
+
40
+ const computeDelay = (attemptAfterThreshold: number) => {
41
+ const base = opts.baseDelay ?? 500;
42
+ const factor = opts.factor ?? 2;
43
+ const max = opts.maxDelay ?? 30000;
44
+ const jitterMax = opts.jitter ?? 250;
45
+ const backoff = Math.min(base * Math.pow(factor, attemptAfterThreshold), max);
46
+ const jitter = jitterMax > 0 ? Math.random() * jitterMax : 0;
47
+ return backoff + jitter;
48
+ };
49
+
50
+ const recordFailure = () => {
51
+ attempts += 1;
52
+ const threshold = opts.threshold ?? 0;
53
+ if (opts.enabled && !opts.enabled()) {
54
+ return { scheduled: false, delay: null };
55
+ }
56
+
57
+ if (attempts - threshold >= 0) {
58
+ const after = Math.max(0, attempts - threshold);
59
+ const delay = computeDelay(after);
60
+ cancel();
61
+ timer = setTimeout(() => {
62
+ if (opts.enabled && !opts.enabled()) return;
63
+ opts.onReconnect();
64
+ }, delay);
65
+ return { scheduled: true, delay };
66
+ }
67
+ return { scheduled: false, delay: null };
68
+ };
69
+
70
+ const dispose = () => cancel();
71
+
72
+ const getAttempts = () => attempts;
73
+
74
+ return { recordFailure, recordSuccess, cancel, reset, dispose, getAttempts };
75
+ }
76
+
77
+ export interface UseWorkbenchWebsocketOptions {
78
+ baseUrl?: string;
79
+ apiKey?: string;
80
+ onConnect?: () => void;
81
+ onReconnect?: () => void;
82
+ onAlive?: () => void;
83
+ onRestarting?: () => void;
84
+ }
85
+
86
+ export interface UseWorkbenchWebsocketResult {
87
+ connected: boolean;
88
+ error: Error | null;
89
+ }
90
+
91
+ export function useWorkbenchWebsocket(
92
+ options: UseWorkbenchWebsocketOptions = {}
93
+ ): UseWorkbenchWebsocketResult {
94
+ const { baseUrl, apiKey, onConnect, onReconnect, onAlive, onRestarting } = options;
95
+
96
+ const manualClose = useRef(false);
97
+ const wsRef = useRef<WebSocket | undefined>(undefined);
98
+ const reconnectManagerRef = useRef<ReturnType<typeof createReconnectManager> | undefined>(
99
+ undefined
100
+ );
101
+ const onConnectRef = useRef(onConnect);
102
+ const onReconnectRef = useRef(onReconnect);
103
+ const onAliveRef = useRef(onAlive);
104
+ const onRestartingRef = useRef(onRestarting);
105
+ const hasConnectedOnce = useRef(false);
106
+
107
+ const [connected, setConnected] = useState(false);
108
+ const [error, setError] = useState<Error | null>(null);
109
+
110
+ // Update refs when callbacks change
111
+ useEffect(() => {
112
+ onConnectRef.current = onConnect;
113
+ onReconnectRef.current = onReconnect;
114
+ onAliveRef.current = onAlive;
115
+ onRestartingRef.current = onRestarting;
116
+ }, [onConnect, onReconnect, onAlive, onRestarting]);
117
+
118
+ const wsUrl = useCallback(() => {
119
+ if (!baseUrl) return null;
120
+ const wsBase = baseUrl.replace(/^http(s?):/, 'ws$1:');
121
+ const url = new URL(`${wsBase}/_agentuity/workbench/ws`);
122
+ if (apiKey) {
123
+ url.searchParams.set('apiKey', apiKey);
124
+ }
125
+ return url.toString();
126
+ }, [baseUrl, apiKey]);
127
+
128
+ const connect = useCallback(() => {
129
+ if (manualClose.current) return;
130
+ const url = wsUrl();
131
+ if (!url) return;
132
+
133
+ wsRef.current = new WebSocket(url);
134
+
135
+ wsRef.current.onopen = () => {
136
+ reconnectManagerRef.current?.recordSuccess();
137
+ setConnected(true);
138
+ setError(null);
139
+
140
+ // Call onConnect or onReconnect based on whether this is the first connection
141
+ if (hasConnectedOnce.current) {
142
+ onReconnectRef.current?.();
143
+ } else {
144
+ hasConnectedOnce.current = true;
145
+ onConnectRef.current?.();
146
+ }
147
+ };
148
+
149
+ wsRef.current.onerror = () => {
150
+ setError(new Error('WebSocket error'));
151
+ };
152
+
153
+ wsRef.current.onclose = (evt) => {
154
+ wsRef.current = undefined;
155
+ setConnected(false);
156
+ if (manualClose.current) {
157
+ return;
158
+ }
159
+ if (evt.code !== 1000) {
160
+ setError(new Error(`WebSocket closed: ${evt.code} ${evt.reason || ''}`));
161
+ }
162
+ reconnectManagerRef.current?.recordFailure();
163
+ };
164
+
165
+ wsRef.current.onmessage = (event: { data: string }) => {
166
+ if (event.data === 'alive') {
167
+ // Server is alive - trigger onAlive callback to refetch schemas
168
+ onAliveRef.current?.();
169
+ } else if (event.data === 'restarting') {
170
+ // Server is about to restart - trigger onRestarting callback
171
+ onRestartingRef.current?.();
172
+ }
173
+ };
174
+ }, [wsUrl]);
175
+
176
+ useEffect(() => {
177
+ reconnectManagerRef.current = createReconnectManager({
178
+ onReconnect: connect,
179
+ threshold: 0,
180
+ baseDelay: 500,
181
+ factor: 2,
182
+ maxDelay: 30000,
183
+ jitter: 500,
184
+ enabled: () => !manualClose.current && !!baseUrl,
185
+ });
186
+ return () => reconnectManagerRef.current?.dispose();
187
+ }, [connect, baseUrl]);
188
+
189
+ const cleanup = useCallback(() => {
190
+ manualClose.current = true;
191
+ reconnectManagerRef.current?.dispose();
192
+ const ws = wsRef.current;
193
+ if (ws) {
194
+ ws.onopen = null;
195
+ ws.onerror = null;
196
+ ws.onclose = null;
197
+ ws.onmessage = null;
198
+ ws.close();
199
+ }
200
+ wsRef.current = undefined;
201
+ setConnected(false);
202
+ // Don't reset hasConnectedOnce here - we want to track if we've ever connected
203
+ }, []);
204
+
205
+ useEffect(() => {
206
+ if (!baseUrl) return;
207
+
208
+ manualClose.current = false;
209
+ connect();
210
+
211
+ return () => {
212
+ cleanup();
213
+ };
214
+ }, [connect, cleanup, baseUrl]);
215
+
216
+ return {
217
+ connected,
218
+ error,
219
+ };
220
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { createWorkbench, Workbench } from './workbench';
1
+ // Export types
2
2
  export type { WorkbenchInstance } from './types';
3
3
 
4
4
  // Export UI components
@@ -13,13 +13,7 @@ export {
13
13
  } from './components/ui/card';
14
14
  export { Input } from './components/ui/input';
15
15
 
16
- // Export utilities
17
- export { cn } from './lib/utils';
18
-
19
- // Re-export workbench config utilities from core
20
- export {
21
- encodeWorkbenchConfig,
22
- decodeWorkbenchConfig,
23
- getWorkbenchConfig,
24
- type WorkbenchConfig,
25
- } from '@agentuity/core';
16
+ // Export components
17
+ export { default as App } from './components/App';
18
+ export { default as Inline } from './components/Inline';
19
+ export { createWorkbench } from './workbench';
package/src/server.ts ADDED
@@ -0,0 +1,6 @@
1
+ // Server-side workbench exports
2
+ // This file exports only the server-side createWorkbench function
3
+ // without pulling in browser-side React components
4
+
5
+ export { createWorkbench } from './workbench';
6
+ export type { WorkbenchInstance } from './types';