@compose-market/theme 0.0.3 → 0.0.4

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 (571) hide show
  1. package/dist/css/index.css +1 -0
  2. package/dist/css/index.d.ts +1 -1
  3. package/dist/css/index.d.ts.map +1 -1
  4. package/dist/css/index.js +1 -0
  5. package/dist/css/index.js.map +1 -1
  6. package/dist/css/shell.css +414 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/shell/index.d.ts +67 -0
  12. package/dist/shell/index.d.ts.map +1 -0
  13. package/dist/shell/index.js +45 -0
  14. package/dist/shell/index.js.map +1 -0
  15. package/dist/shell/styles.d.ts +2 -0
  16. package/dist/shell/styles.d.ts.map +1 -0
  17. package/dist/shell/styles.js +416 -0
  18. package/dist/shell/styles.js.map +1 -0
  19. package/package.json +13 -2
  20. package/dist/components/RFAComponent.d.ts +0 -10
  21. package/dist/components/RFAComponent.d.ts.map +0 -1
  22. package/dist/components/RFAComponent.js +0 -288
  23. package/dist/components/RFAComponent.js.map +0 -1
  24. package/dist/components/RFADetails.d.ts +0 -9
  25. package/dist/components/RFADetails.d.ts.map +0 -1
  26. package/dist/components/RFADetails.js +0 -407
  27. package/dist/components/RFADetails.js.map +0 -1
  28. package/dist/components/agent-card.d.ts +0 -8
  29. package/dist/components/agent-card.d.ts.map +0 -1
  30. package/dist/components/agent-card.js +0 -216
  31. package/dist/components/agent-card.js.map +0 -1
  32. package/dist/components/backpack.d.ts +0 -21
  33. package/dist/components/backpack.d.ts.map +0 -1
  34. package/dist/components/backpack.js +0 -905
  35. package/dist/components/backpack.js.map +0 -1
  36. package/dist/components/blur.d.ts +0 -9
  37. package/dist/components/blur.d.ts.map +0 -1
  38. package/dist/components/blur.js +0 -60
  39. package/dist/components/blur.js.map +0 -1
  40. package/dist/components/brand/Logo.d.ts +0 -25
  41. package/dist/components/brand/Logo.d.ts.map +0 -1
  42. package/dist/components/brand/Logo.js +0 -53
  43. package/dist/components/brand/Logo.js.map +0 -1
  44. package/dist/components/brand/index.d.ts +0 -2
  45. package/dist/components/brand/index.d.ts.map +0 -1
  46. package/dist/components/brand/index.js +0 -2
  47. package/dist/components/brand/index.js.map +0 -1
  48. package/dist/components/chat.d.ts +0 -68
  49. package/dist/components/chat.d.ts.map +0 -1
  50. package/dist/components/chat.js +0 -618
  51. package/dist/components/chat.js.map +0 -1
  52. package/dist/components/compose/index.d.ts +0 -10
  53. package/dist/components/compose/index.d.ts.map +0 -1
  54. package/dist/components/compose/index.js +0 -13
  55. package/dist/components/compose/index.js.map +0 -1
  56. package/dist/components/compose/nodes/agent-node.d.ts +0 -11
  57. package/dist/components/compose/nodes/agent-node.d.ts.map +0 -1
  58. package/dist/components/compose/nodes/agent-node.js +0 -101
  59. package/dist/components/compose/nodes/agent-node.js.map +0 -1
  60. package/dist/components/compose/nodes/hook-node.d.ts +0 -11
  61. package/dist/components/compose/nodes/hook-node.d.ts.map +0 -1
  62. package/dist/components/compose/nodes/hook-node.js +0 -100
  63. package/dist/components/compose/nodes/hook-node.js.map +0 -1
  64. package/dist/components/compose/nodes/index.d.ts +0 -60
  65. package/dist/components/compose/nodes/index.d.ts.map +0 -1
  66. package/dist/components/compose/nodes/index.js +0 -22
  67. package/dist/components/compose/nodes/index.js.map +0 -1
  68. package/dist/components/compose/nodes/step-node.d.ts +0 -11
  69. package/dist/components/compose/nodes/step-node.d.ts.map +0 -1
  70. package/dist/components/compose/nodes/step-node.js +0 -88
  71. package/dist/components/compose/nodes/step-node.js.map +0 -1
  72. package/dist/components/compose/nodes/trigger-node.d.ts +0 -11
  73. package/dist/components/compose/nodes/trigger-node.d.ts.map +0 -1
  74. package/dist/components/compose/nodes/trigger-node.js +0 -92
  75. package/dist/components/compose/nodes/trigger-node.js.map +0 -1
  76. package/dist/components/compose/overlay.d.ts +0 -26
  77. package/dist/components/compose/overlay.d.ts.map +0 -1
  78. package/dist/components/compose/overlay.js +0 -48
  79. package/dist/components/compose/overlay.js.map +0 -1
  80. package/dist/components/compose/pickers/agents-picker.d.ts +0 -18
  81. package/dist/components/compose/pickers/agents-picker.d.ts.map +0 -1
  82. package/dist/components/compose/pickers/agents-picker.js +0 -180
  83. package/dist/components/compose/pickers/agents-picker.js.map +0 -1
  84. package/dist/components/compose/pickers/connector-detail.d.ts +0 -16
  85. package/dist/components/compose/pickers/connector-detail.d.ts.map +0 -1
  86. package/dist/components/compose/pickers/connector-detail.js +0 -236
  87. package/dist/components/compose/pickers/connector-detail.js.map +0 -1
  88. package/dist/components/compose/pickers/connector-picker.d.ts +0 -13
  89. package/dist/components/compose/pickers/connector-picker.d.ts.map +0 -1
  90. package/dist/components/compose/pickers/connector-picker.js +0 -101
  91. package/dist/components/compose/pickers/connector-picker.js.map +0 -1
  92. package/dist/components/compose/pickers/index.d.ts +0 -10
  93. package/dist/components/compose/pickers/index.d.ts.map +0 -1
  94. package/dist/components/compose/pickers/index.js +0 -10
  95. package/dist/components/compose/pickers/index.js.map +0 -1
  96. package/dist/components/compose/pickers/trigger-picker.d.ts +0 -13
  97. package/dist/components/compose/pickers/trigger-picker.d.ts.map +0 -1
  98. package/dist/components/compose/pickers/trigger-picker.js +0 -110
  99. package/dist/components/compose/pickers/trigger-picker.js.map +0 -1
  100. package/dist/components/compose/toolbox.d.ts +0 -24
  101. package/dist/components/compose/toolbox.d.ts.map +0 -1
  102. package/dist/components/compose/toolbox.js +0 -183
  103. package/dist/components/compose/toolbox.js.map +0 -1
  104. package/dist/components/connector.d.ts +0 -24
  105. package/dist/components/connector.d.ts.map +0 -1
  106. package/dist/components/connector.js +0 -263
  107. package/dist/components/connector.js.map +0 -1
  108. package/dist/components/dispenser.d.ts +0 -15
  109. package/dist/components/dispenser.d.ts.map +0 -1
  110. package/dist/components/dispenser.js +0 -323
  111. package/dist/components/dispenser.js.map +0 -1
  112. package/dist/components/layout/AppLayout.d.ts +0 -60
  113. package/dist/components/layout/AppLayout.d.ts.map +0 -1
  114. package/dist/components/layout/AppLayout.js +0 -265
  115. package/dist/components/layout/AppLayout.js.map +0 -1
  116. package/dist/components/layout/Layout.d.ts +0 -6
  117. package/dist/components/layout/Layout.d.ts.map +0 -1
  118. package/dist/components/layout/Layout.js +0 -186
  119. package/dist/components/layout/Layout.js.map +0 -1
  120. package/dist/components/layout/Sidebar.d.ts +0 -3
  121. package/dist/components/layout/Sidebar.d.ts.map +0 -1
  122. package/dist/components/layout/Sidebar.js +0 -160
  123. package/dist/components/layout/Sidebar.js.map +0 -1
  124. package/dist/components/layout/TopBar.d.ts +0 -6
  125. package/dist/components/layout/TopBar.d.ts.map +0 -1
  126. package/dist/components/layout/TopBar.js +0 -36
  127. package/dist/components/layout/TopBar.js.map +0 -1
  128. package/dist/components/layout/index.d.ts +0 -2
  129. package/dist/components/layout/index.d.ts.map +0 -1
  130. package/dist/components/layout/index.js +0 -2
  131. package/dist/components/layout/index.js.map +0 -1
  132. package/dist/components/lyria-player.d.ts +0 -23
  133. package/dist/components/lyria-player.d.ts.map +0 -1
  134. package/dist/components/lyria-player.js +0 -241
  135. package/dist/components/lyria-player.js.map +0 -1
  136. package/dist/components/manowar-card.d.ts +0 -8
  137. package/dist/components/manowar-card.d.ts.map +0 -1
  138. package/dist/components/manowar-card.js +0 -349
  139. package/dist/components/manowar-card.js.map +0 -1
  140. package/dist/components/mirror-pane.d.ts +0 -55
  141. package/dist/components/mirror-pane.d.ts.map +0 -1
  142. package/dist/components/mirror-pane.js +0 -330
  143. package/dist/components/mirror-pane.js.map +0 -1
  144. package/dist/components/model-selector.d.ts +0 -12
  145. package/dist/components/model-selector.d.ts.map +0 -1
  146. package/dist/components/model-selector.js +0 -148
  147. package/dist/components/model-selector.js.map +0 -1
  148. package/dist/components/output.d.ts +0 -26
  149. package/dist/components/output.d.ts.map +0 -1
  150. package/dist/components/output.js +0 -259
  151. package/dist/components/output.js.map +0 -1
  152. package/dist/components/partners.d.ts +0 -13
  153. package/dist/components/partners.d.ts.map +0 -1
  154. package/dist/components/partners.js +0 -210
  155. package/dist/components/partners.js.map +0 -1
  156. package/dist/components/plugin-tester.d.ts +0 -13
  157. package/dist/components/plugin-tester.d.ts.map +0 -1
  158. package/dist/components/plugin-tester.js +0 -907
  159. package/dist/components/plugin-tester.js.map +0 -1
  160. package/dist/components/session/SessionComponents.d.ts +0 -2
  161. package/dist/components/session/SessionComponents.d.ts.map +0 -1
  162. package/dist/components/session/SessionComponents.js +0 -2
  163. package/dist/components/session/SessionComponents.js.map +0 -1
  164. package/dist/components/session/index.d.ts +0 -2
  165. package/dist/components/session/index.d.ts.map +0 -1
  166. package/dist/components/session/index.js +0 -2
  167. package/dist/components/session/index.js.map +0 -1
  168. package/dist/components/session.d.ts +0 -58
  169. package/dist/components/session.d.ts.map +0 -1
  170. package/dist/components/session.js +0 -580
  171. package/dist/components/session.js.map +0 -1
  172. package/dist/components/share-dialog.d.ts +0 -9
  173. package/dist/components/share-dialog.d.ts.map +0 -1
  174. package/dist/components/share-dialog.js +0 -49
  175. package/dist/components/share-dialog.js.map +0 -1
  176. package/dist/components/ui/accordion.d.ts +0 -6
  177. package/dist/components/ui/accordion.d.ts.map +0 -1
  178. package/dist/components/ui/accordion.js +0 -20
  179. package/dist/components/ui/accordion.js.map +0 -1
  180. package/dist/components/ui/alert-dialog.d.ts +0 -20
  181. package/dist/components/ui/alert-dialog.d.ts.map +0 -1
  182. package/dist/components/ui/alert-dialog.js +0 -29
  183. package/dist/components/ui/alert-dialog.js.map +0 -1
  184. package/dist/components/ui/alert.d.ts +0 -5
  185. package/dist/components/ui/alert.d.ts.map +0 -1
  186. package/dist/components/ui/alert.js +0 -22
  187. package/dist/components/ui/alert.js.map +0 -1
  188. package/dist/components/ui/aspect-ratio.d.ts +0 -3
  189. package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
  190. package/dist/components/ui/aspect-ratio.js +0 -4
  191. package/dist/components/ui/aspect-ratio.js.map +0 -1
  192. package/dist/components/ui/avatar.d.ts +0 -5
  193. package/dist/components/ui/avatar.d.ts.map +0 -1
  194. package/dist/components/ui/avatar.js +0 -12
  195. package/dist/components/ui/avatar.js.map +0 -1
  196. package/dist/components/ui/badge.d.ts +0 -8
  197. package/dist/components/ui/badge.d.ts.map +0 -1
  198. package/dist/components/ui/badge.js +0 -24
  199. package/dist/components/ui/badge.js.map +0 -1
  200. package/dist/components/ui/breadcrumb.d.ts +0 -16
  201. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  202. package/dist/components/ui/breadcrumb.js +0 -28
  203. package/dist/components/ui/breadcrumb.js.map +0 -1
  204. package/dist/components/ui/button-group.d.ts +0 -10
  205. package/dist/components/ui/button-group.d.ts.map +0 -1
  206. package/dist/components/ui/button-group.js +0 -27
  207. package/dist/components/ui/button-group.js.map +0 -1
  208. package/dist/components/ui/button.d.ts +0 -11
  209. package/dist/components/ui/button.d.ts.map +0 -1
  210. package/dist/components/ui/button.js +0 -42
  211. package/dist/components/ui/button.js.map +0 -1
  212. package/dist/components/ui/calendar.d.ts +0 -9
  213. package/dist/components/ui/calendar.d.ts.map +0 -1
  214. package/dist/components/ui/calendar.js +0 -78
  215. package/dist/components/ui/calendar.js.map +0 -1
  216. package/dist/components/ui/card.d.ts +0 -8
  217. package/dist/components/ui/card.d.ts.map +0 -1
  218. package/dist/components/ui/card.js +0 -17
  219. package/dist/components/ui/card.js.map +0 -1
  220. package/dist/components/ui/carousel.d.ts +0 -9
  221. package/dist/components/ui/carousel.d.ts.map +0 -1
  222. package/dist/components/ui/carousel.js +0 -110
  223. package/dist/components/ui/carousel.js.map +0 -1
  224. package/dist/components/ui/chart.d.ts +0 -28
  225. package/dist/components/ui/chart.d.ts.map +0 -1
  226. package/dist/components/ui/chart.js +0 -168
  227. package/dist/components/ui/chart.js.map +0 -1
  228. package/dist/components/ui/checkbox.d.ts +0 -3
  229. package/dist/components/ui/checkbox.d.ts.map +0 -1
  230. package/dist/components/ui/checkbox.js +0 -12
  231. package/dist/components/ui/checkbox.js.map +0 -1
  232. package/dist/components/ui/collapsible.d.ts +0 -5
  233. package/dist/components/ui/collapsible.d.ts.map +0 -1
  234. package/dist/components/ui/collapsible.js +0 -7
  235. package/dist/components/ui/collapsible.js.map +0 -1
  236. package/dist/components/ui/command.d.ts +0 -16
  237. package/dist/components/ui/command.d.ts.map +0 -1
  238. package/dist/components/ui/command.js +0 -38
  239. package/dist/components/ui/command.js.map +0 -1
  240. package/dist/components/ui/context-menu.d.ts +0 -21
  241. package/dist/components/ui/context-menu.d.ts.map +0 -1
  242. package/dist/components/ui/context-menu.js +0 -52
  243. package/dist/components/ui/context-menu.js.map +0 -1
  244. package/dist/components/ui/dialog.d.ts +0 -19
  245. package/dist/components/ui/dialog.d.ts.map +0 -1
  246. package/dist/components/ui/dialog.js +0 -31
  247. package/dist/components/ui/dialog.js.map +0 -1
  248. package/dist/components/ui/drawer.d.ts +0 -23
  249. package/dist/components/ui/drawer.d.ts.map +0 -1
  250. package/dist/components/ui/drawer.js +0 -28
  251. package/dist/components/ui/drawer.js.map +0 -1
  252. package/dist/components/ui/dropdown-menu.d.ts +0 -21
  253. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  254. package/dist/components/ui/dropdown-menu.js +0 -55
  255. package/dist/components/ui/dropdown-menu.js.map +0 -1
  256. package/dist/components/ui/empty.d.ts +0 -10
  257. package/dist/components/ui/empty.d.ts.map +0 -1
  258. package/dist/components/ui/empty.js +0 -33
  259. package/dist/components/ui/empty.js.map +0 -1
  260. package/dist/components/ui/field.d.ts +0 -23
  261. package/dist/components/ui/field.d.ts.map +0 -1
  262. package/dist/components/ui/field.js +0 -82
  263. package/dist/components/ui/field.js.map +0 -1
  264. package/dist/components/ui/form.d.ts +0 -11
  265. package/dist/components/ui/form.d.ts.map +0 -1
  266. package/dist/components/ui/form.js +0 -71
  267. package/dist/components/ui/form.js.map +0 -1
  268. package/dist/components/ui/hover-card.d.ts +0 -5
  269. package/dist/components/ui/hover-card.d.ts.map +0 -1
  270. package/dist/components/ui/hover-card.js +0 -9
  271. package/dist/components/ui/hover-card.js.map +0 -1
  272. package/dist/components/ui/index.d.ts +0 -7
  273. package/dist/components/ui/index.d.ts.map +0 -1
  274. package/dist/components/ui/index.js +0 -7
  275. package/dist/components/ui/index.js.map +0 -1
  276. package/dist/components/ui/input-group.d.ts +0 -13
  277. package/dist/components/ui/input-group.d.ts.map +0 -1
  278. package/dist/components/ui/input-group.js +0 -63
  279. package/dist/components/ui/input-group.js.map +0 -1
  280. package/dist/components/ui/input-otp.d.ts +0 -6
  281. package/dist/components/ui/input-otp.d.ts.map +0 -1
  282. package/dist/components/ui/input-otp.js +0 -25
  283. package/dist/components/ui/input-otp.js.map +0 -1
  284. package/dist/components/ui/input.d.ts +0 -3
  285. package/dist/components/ui/input.d.ts.map +0 -1
  286. package/dist/components/ui/input.js +0 -8
  287. package/dist/components/ui/input.js.map +0 -1
  288. package/dist/components/ui/item.d.ts +0 -19
  289. package/dist/components/ui/item.d.ts.map +0 -1
  290. package/dist/components/ui/item.js +0 -67
  291. package/dist/components/ui/item.js.map +0 -1
  292. package/dist/components/ui/kbd.d.ts +0 -4
  293. package/dist/components/ui/kbd.d.ts.map +0 -1
  294. package/dist/components/ui/kbd.js +0 -9
  295. package/dist/components/ui/kbd.js.map +0 -1
  296. package/dist/components/ui/label.d.ts +0 -3
  297. package/dist/components/ui/label.d.ts.map +0 -1
  298. package/dist/components/ui/label.js +0 -10
  299. package/dist/components/ui/label.js.map +0 -1
  300. package/dist/components/ui/menubar.d.ts +0 -23
  301. package/dist/components/ui/menubar.d.ts.map +0 -1
  302. package/dist/components/ui/menubar.js +0 -64
  303. package/dist/components/ui/menubar.js.map +0 -1
  304. package/dist/components/ui/navigation-menu.d.ts +0 -11
  305. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  306. package/dist/components/ui/navigation-menu.js +0 -34
  307. package/dist/components/ui/navigation-menu.js.map +0 -1
  308. package/dist/components/ui/network-selector.d.ts +0 -22
  309. package/dist/components/ui/network-selector.d.ts.map +0 -1
  310. package/dist/components/ui/network-selector.js +0 -99
  311. package/dist/components/ui/network-selector.js.map +0 -1
  312. package/dist/components/ui/pagination.d.ts +0 -29
  313. package/dist/components/ui/pagination.d.ts.map +0 -1
  314. package/dist/components/ui/pagination.js +0 -32
  315. package/dist/components/ui/pagination.js.map +0 -1
  316. package/dist/components/ui/popover.d.ts +0 -6
  317. package/dist/components/ui/popover.d.ts.map +0 -1
  318. package/dist/components/ui/popover.js +0 -12
  319. package/dist/components/ui/popover.js.map +0 -1
  320. package/dist/components/ui/progress.d.ts +0 -3
  321. package/dist/components/ui/progress.d.ts.map +0 -1
  322. package/dist/components/ui/progress.js +0 -10
  323. package/dist/components/ui/progress.js.map +0 -1
  324. package/dist/components/ui/radio-group.d.ts +0 -4
  325. package/dist/components/ui/radio-group.d.ts.map +0 -1
  326. package/dist/components/ui/radio-group.js +0 -18
  327. package/dist/components/ui/radio-group.js.map +0 -1
  328. package/dist/components/ui/resizable.d.ts +0 -8
  329. package/dist/components/ui/resizable.d.ts.map +0 -1
  330. package/dist/components/ui/resizable.js +0 -13
  331. package/dist/components/ui/resizable.js.map +0 -1
  332. package/dist/components/ui/scroll-area.d.ts +0 -4
  333. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  334. package/dist/components/ui/scroll-area.js +0 -19
  335. package/dist/components/ui/scroll-area.js.map +0 -1
  336. package/dist/components/ui/select.d.ts +0 -12
  337. package/dist/components/ui/select.d.ts.map +0 -1
  338. package/dist/components/ui/select.js +0 -51
  339. package/dist/components/ui/select.js.map +0 -1
  340. package/dist/components/ui/separator.d.ts +0 -3
  341. package/dist/components/ui/separator.d.ts.map +0 -1
  342. package/dist/components/ui/separator.js +0 -7
  343. package/dist/components/ui/separator.js.map +0 -1
  344. package/dist/components/ui/sheet.d.ts +0 -19
  345. package/dist/components/ui/sheet.d.ts.map +0 -1
  346. package/dist/components/ui/sheet.js +0 -46
  347. package/dist/components/ui/sheet.js.map +0 -1
  348. package/dist/components/ui/sidebar.d.ts +0 -58
  349. package/dist/components/ui/sidebar.d.ts.map +0 -1
  350. package/dist/components/ui/sidebar.js +0 -246
  351. package/dist/components/ui/sidebar.js.map +0 -1
  352. package/dist/components/ui/skeleton.d.ts +0 -3
  353. package/dist/components/ui/skeleton.d.ts.map +0 -1
  354. package/dist/components/ui/skeleton.js +0 -6
  355. package/dist/components/ui/skeleton.js.map +0 -1
  356. package/dist/components/ui/slider.d.ts +0 -3
  357. package/dist/components/ui/slider.d.ts.map +0 -1
  358. package/dist/components/ui/slider.js +0 -12
  359. package/dist/components/ui/slider.js.map +0 -1
  360. package/dist/components/ui/sonner.d.ts +0 -5
  361. package/dist/components/ui/sonner.d.ts.map +0 -1
  362. package/dist/components/ui/sonner.js +0 -16
  363. package/dist/components/ui/sonner.js.map +0 -1
  364. package/dist/components/ui/spinner.d.ts +0 -3
  365. package/dist/components/ui/spinner.d.ts.map +0 -1
  366. package/dist/components/ui/spinner.js +0 -7
  367. package/dist/components/ui/spinner.js.map +0 -1
  368. package/dist/components/ui/surface-variant.d.ts +0 -4
  369. package/dist/components/ui/surface-variant.d.ts.map +0 -1
  370. package/dist/components/ui/surface-variant.js +0 -10
  371. package/dist/components/ui/surface-variant.js.map +0 -1
  372. package/dist/components/ui/switch.d.ts +0 -3
  373. package/dist/components/ui/switch.d.ts.map +0 -1
  374. package/dist/components/ui/switch.js +0 -9
  375. package/dist/components/ui/switch.js.map +0 -1
  376. package/dist/components/ui/table.d.ts +0 -10
  377. package/dist/components/ui/table.d.ts.map +0 -1
  378. package/dist/components/ui/table.js +0 -22
  379. package/dist/components/ui/table.js.map +0 -1
  380. package/dist/components/ui/tabs.d.ts +0 -6
  381. package/dist/components/ui/tabs.d.ts.map +0 -1
  382. package/dist/components/ui/tabs.js +0 -13
  383. package/dist/components/ui/tabs.js.map +0 -1
  384. package/dist/components/ui/textarea.d.ts +0 -3
  385. package/dist/components/ui/textarea.d.ts.map +0 -1
  386. package/dist/components/ui/textarea.js +0 -8
  387. package/dist/components/ui/textarea.js.map +0 -1
  388. package/dist/components/ui/toast.d.ts +0 -12
  389. package/dist/components/ui/toast.d.ts.map +0 -1
  390. package/dist/components/ui/toast.js +0 -35
  391. package/dist/components/ui/toast.js.map +0 -1
  392. package/dist/components/ui/toaster.d.ts +0 -2
  393. package/dist/components/ui/toaster.d.ts.map +0 -1
  394. package/dist/components/ui/toaster.js +0 -19
  395. package/dist/components/ui/toaster.js.map +0 -1
  396. package/dist/components/ui/toggle-group.d.ts +0 -4
  397. package/dist/components/ui/toggle-group.d.ts.map +0 -1
  398. package/dist/components/ui/toggle-group.js +0 -27
  399. package/dist/components/ui/toggle-group.js.map +0 -1
  400. package/dist/components/ui/toggle.d.ts +0 -4
  401. package/dist/components/ui/toggle.d.ts.map +0 -1
  402. package/dist/components/ui/toggle.js +0 -25
  403. package/dist/components/ui/toggle.js.map +0 -1
  404. package/dist/components/ui/tooltip.d.ts +0 -6
  405. package/dist/components/ui/tooltip.d.ts.map +0 -1
  406. package/dist/components/ui/tooltip.js +0 -13
  407. package/dist/components/ui/tooltip.js.map +0 -1
  408. package/dist/components/visual/ManowarField.d.ts +0 -9
  409. package/dist/components/visual/ManowarField.d.ts.map +0 -1
  410. package/dist/components/visual/ManowarField.js +0 -111
  411. package/dist/components/visual/ManowarField.js.map +0 -1
  412. package/dist/components/warp-form.d.ts +0 -22
  413. package/dist/components/warp-form.d.ts.map +0 -1
  414. package/dist/components/warp-form.js +0 -743
  415. package/dist/components/warp-form.js.map +0 -1
  416. package/dist/hooks/use-agents.d.ts +0 -17
  417. package/dist/hooks/use-agents.d.ts.map +0 -1
  418. package/dist/hooks/use-agents.js +0 -64
  419. package/dist/hooks/use-agents.js.map +0 -1
  420. package/dist/hooks/use-api.d.ts +0 -28
  421. package/dist/hooks/use-api.d.ts.map +0 -1
  422. package/dist/hooks/use-api.js +0 -114
  423. package/dist/hooks/use-api.js.map +0 -1
  424. package/dist/hooks/use-chat.d.ts +0 -64
  425. package/dist/hooks/use-chat.d.ts.map +0 -1
  426. package/dist/hooks/use-chat.js +0 -350
  427. package/dist/hooks/use-chat.js.map +0 -1
  428. package/dist/hooks/use-coordinator.d.ts +0 -41
  429. package/dist/hooks/use-coordinator.d.ts.map +0 -1
  430. package/dist/hooks/use-coordinator.js +0 -110
  431. package/dist/hooks/use-coordinator.js.map +0 -1
  432. package/dist/hooks/use-dispenser.d.ts +0 -68
  433. package/dist/hooks/use-dispenser.d.ts.map +0 -1
  434. package/dist/hooks/use-dispenser.js +0 -113
  435. package/dist/hooks/use-dispenser.js.map +0 -1
  436. package/dist/hooks/use-lyria.d.ts +0 -58
  437. package/dist/hooks/use-lyria.d.ts.map +0 -1
  438. package/dist/hooks/use-lyria.js +0 -254
  439. package/dist/hooks/use-lyria.js.map +0 -1
  440. package/dist/hooks/use-mobile.d.ts +0 -2
  441. package/dist/hooks/use-mobile.d.ts.map +0 -1
  442. package/dist/hooks/use-mobile.js +0 -16
  443. package/dist/hooks/use-mobile.js.map +0 -1
  444. package/dist/hooks/use-model.d.ts +0 -34
  445. package/dist/hooks/use-model.d.ts.map +0 -1
  446. package/dist/hooks/use-model.js +0 -105
  447. package/dist/hooks/use-model.js.map +0 -1
  448. package/dist/hooks/use-motion-governor.d.ts +0 -10
  449. package/dist/hooks/use-motion-governor.d.ts.map +0 -1
  450. package/dist/hooks/use-motion-governor.js +0 -63
  451. package/dist/hooks/use-motion-governor.js.map +0 -1
  452. package/dist/hooks/use-multichain.d.ts +0 -34
  453. package/dist/hooks/use-multichain.d.ts.map +0 -1
  454. package/dist/hooks/use-multichain.js +0 -120
  455. package/dist/hooks/use-multichain.js.map +0 -1
  456. package/dist/hooks/use-onchain.d.ts +0 -145
  457. package/dist/hooks/use-onchain.d.ts.map +0 -1
  458. package/dist/hooks/use-onchain.js +0 -652
  459. package/dist/hooks/use-onchain.js.map +0 -1
  460. package/dist/hooks/use-registry.d.ts +0 -140
  461. package/dist/hooks/use-registry.d.ts.map +0 -1
  462. package/dist/hooks/use-registry.js +0 -264
  463. package/dist/hooks/use-registry.js.map +0 -1
  464. package/dist/hooks/use-services.d.ts +0 -66
  465. package/dist/hooks/use-services.d.ts.map +0 -1
  466. package/dist/hooks/use-services.js +0 -216
  467. package/dist/hooks/use-services.js.map +0 -1
  468. package/dist/hooks/use-session.d.ts +0 -36
  469. package/dist/hooks/use-session.d.ts.map +0 -1
  470. package/dist/hooks/use-session.js +0 -449
  471. package/dist/hooks/use-session.js.map +0 -1
  472. package/dist/hooks/use-sse.d.ts +0 -8
  473. package/dist/hooks/use-sse.d.ts.map +0 -1
  474. package/dist/hooks/use-sse.js +0 -86
  475. package/dist/hooks/use-sse.js.map +0 -1
  476. package/dist/hooks/use-tabs.d.ts +0 -2
  477. package/dist/hooks/use-tabs.d.ts.map +0 -1
  478. package/dist/hooks/use-tabs.js +0 -43
  479. package/dist/hooks/use-tabs.js.map +0 -1
  480. package/dist/hooks/use-toast.d.ts +0 -41
  481. package/dist/hooks/use-toast.d.ts.map +0 -1
  482. package/dist/hooks/use-toast.js +0 -127
  483. package/dist/hooks/use-toast.js.map +0 -1
  484. package/dist/hooks/use-triggers.d.ts +0 -51
  485. package/dist/hooks/use-triggers.d.ts.map +0 -1
  486. package/dist/hooks/use-triggers.js +0 -212
  487. package/dist/hooks/use-triggers.js.map +0 -1
  488. package/dist/hooks/use-warp.d.ts +0 -53
  489. package/dist/hooks/use-warp.d.ts.map +0 -1
  490. package/dist/hooks/use-warp.js +0 -231
  491. package/dist/hooks/use-warp.js.map +0 -1
  492. package/dist/hooks/use-workflow.d.ts +0 -40
  493. package/dist/hooks/use-workflow.d.ts.map +0 -1
  494. package/dist/hooks/use-workflow.js +0 -358
  495. package/dist/hooks/use-workflow.js.map +0 -1
  496. package/dist/lib/agents.d.ts +0 -186
  497. package/dist/lib/agents.d.ts.map +0 -1
  498. package/dist/lib/agents.js +0 -633
  499. package/dist/lib/agents.js.map +0 -1
  500. package/dist/lib/api.d.ts +0 -224
  501. package/dist/lib/api.d.ts.map +0 -1
  502. package/dist/lib/api.js +0 -443
  503. package/dist/lib/api.js.map +0 -1
  504. package/dist/lib/chains.d.ts +0 -151
  505. package/dist/lib/chains.d.ts.map +0 -1
  506. package/dist/lib/chains.js +0 -297
  507. package/dist/lib/chains.js.map +0 -1
  508. package/dist/lib/contracts.d.ts +0 -960
  509. package/dist/lib/contracts.d.ts.map +0 -1
  510. package/dist/lib/contracts.js +0 -716
  511. package/dist/lib/contracts.js.map +0 -1
  512. package/dist/lib/cronos/aa.d.ts +0 -111
  513. package/dist/lib/cronos/aa.d.ts.map +0 -1
  514. package/dist/lib/cronos/aa.js +0 -312
  515. package/dist/lib/cronos/aa.js.map +0 -1
  516. package/dist/lib/cronos/facilitator.d.ts +0 -87
  517. package/dist/lib/cronos/facilitator.d.ts.map +0 -1
  518. package/dist/lib/cronos/facilitator.js +0 -183
  519. package/dist/lib/cronos/facilitator.js.map +0 -1
  520. package/dist/lib/evm.d.ts +0 -45
  521. package/dist/lib/evm.d.ts.map +0 -1
  522. package/dist/lib/evm.js +0 -78
  523. package/dist/lib/evm.js.map +0 -1
  524. package/dist/lib/mockData.d.ts +0 -26
  525. package/dist/lib/mockData.d.ts.map +0 -1
  526. package/dist/lib/mockData.js +0 -89
  527. package/dist/lib/mockData.js.map +0 -1
  528. package/dist/lib/models.d.ts +0 -122
  529. package/dist/lib/models.d.ts.map +0 -1
  530. package/dist/lib/models.js +0 -174
  531. package/dist/lib/models.js.map +0 -1
  532. package/dist/lib/multimodal.d.ts +0 -53
  533. package/dist/lib/multimodal.d.ts.map +0 -1
  534. package/dist/lib/multimodal.js +0 -204
  535. package/dist/lib/multimodal.js.map +0 -1
  536. package/dist/lib/payment.d.ts +0 -67
  537. package/dist/lib/payment.d.ts.map +0 -1
  538. package/dist/lib/payment.js +0 -236
  539. package/dist/lib/payment.js.map +0 -1
  540. package/dist/lib/pinata.d.ts +0 -140
  541. package/dist/lib/pinata.d.ts.map +0 -1
  542. package/dist/lib/pinata.js +0 -209
  543. package/dist/lib/pinata.js.map +0 -1
  544. package/dist/lib/queryClient.d.ts +0 -9
  545. package/dist/lib/queryClient.d.ts.map +0 -1
  546. package/dist/lib/queryClient.js +0 -42
  547. package/dist/lib/queryClient.js.map +0 -1
  548. package/dist/lib/services.d.ts +0 -164
  549. package/dist/lib/services.d.ts.map +0 -1
  550. package/dist/lib/services.js +0 -304
  551. package/dist/lib/services.js.map +0 -1
  552. package/dist/lib/share.d.ts +0 -12
  553. package/dist/lib/share.d.ts.map +0 -1
  554. package/dist/lib/share.js +0 -39
  555. package/dist/lib/share.js.map +0 -1
  556. package/dist/lib/triggers.d.ts +0 -128
  557. package/dist/lib/triggers.d.ts.map +0 -1
  558. package/dist/lib/triggers.js +0 -305
  559. package/dist/lib/triggers.js.map +0 -1
  560. package/dist/lib/utils.d.ts +0 -3
  561. package/dist/lib/utils.d.ts.map +0 -1
  562. package/dist/lib/utils.js +0 -6
  563. package/dist/lib/utils.js.map +0 -1
  564. package/dist/lib/visual-system.d.ts +0 -39
  565. package/dist/lib/visual-system.d.ts.map +0 -1
  566. package/dist/lib/visual-system.js +0 -129
  567. package/dist/lib/visual-system.js.map +0 -1
  568. package/dist/utils/index.d.ts +0 -2
  569. package/dist/utils/index.d.ts.map +0 -1
  570. package/dist/utils/index.js +0 -2
  571. package/dist/utils/index.js.map +0 -1
@@ -1,907 +0,0 @@
1
- /**
2
- * Plugin Tester Component
3
- *
4
- * Unified testing interface for GOAT, MCP, and Eliza plugins.
5
- * Extracts all plugin testing functionality from the playground page.
6
- */
7
- import React, { useState, useEffect, useRef, useCallback, useMemo } from "react";
8
- import { useActiveWallet, useActiveAccount } from "thirdweb/react";
9
- import { inferencePriceWei } from "@/lib/chains.js";
10
- import { createPaymentFetch } from "@/lib/payment";
11
- import { useChain } from "@/contexts/ChainContext";
12
- import { useSession } from "@/hooks/use-session";
13
- import { Button } from "@/components/ui/button";
14
- import { Badge } from "@/components/ui/badge";
15
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
16
- import { Textarea } from "@/components/ui/textarea";
17
- import { ScrollArea } from "@/components/ui/scroll-area";
18
- import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
19
- import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command";
20
- import { cn } from "@/lib/utils";
21
- import { useRegistryServers } from "@/hooks/use-registry";
22
- import { Loader2, RefreshCw, Trash2, Plug, Play, Terminal, AlertCircle, ExternalLink, ChevronsUpDown, Check, } from "lucide-react";
23
- const API_BASE = (import.meta.env.VITE_API_URL || "https://api.compose.market").replace(/\/+$/, "");
24
- const CONNECTOR_URL = (import.meta.env.VITE_CONNECTOR_URL || "https://services.compose.market/connector").replace(/\/+$/, "");
25
- // =============================================================================
26
- // Helpers
27
- // =============================================================================
28
- function generateDefaultArgs(schema) {
29
- const result = {};
30
- const props = schema.properties;
31
- if (!props)
32
- return result;
33
- for (const [key, prop] of Object.entries(props)) {
34
- if (prop.default !== undefined) {
35
- result[key] = prop.default;
36
- }
37
- else if (prop.type === "string") {
38
- if (key.toLowerCase().includes("address")) {
39
- result[key] = "0x...";
40
- }
41
- else if (key.toLowerCase().includes("amount")) {
42
- result[key] = "0";
43
- }
44
- else {
45
- result[key] = "";
46
- }
47
- }
48
- else if (prop.type === "number" || prop.type === "integer") {
49
- result[key] = 0;
50
- }
51
- else if (prop.type === "boolean") {
52
- result[key] = false;
53
- }
54
- else if (prop.type === "array") {
55
- result[key] = [];
56
- }
57
- else if (prop.type === "object") {
58
- result[key] = {};
59
- }
60
- }
61
- return result;
62
- }
63
- function formatSchemaHint(schema) {
64
- const props = schema.properties;
65
- const required = schema.required || [];
66
- if (!props)
67
- return "No parameters required";
68
- const lines = [];
69
- for (const [key, prop] of Object.entries(props)) {
70
- const isRequired = required.includes(key);
71
- const desc = prop.description || "";
72
- lines.push(`• ${key}${isRequired ? " *" : ""} (${prop.type || "any"}): ${desc}`);
73
- }
74
- return lines.join("\n");
75
- }
76
- // =============================================================================
77
- // Component
78
- // =============================================================================
79
- export function PluginTester({ sessionActive, budgetRemaining, formatBudget, initialSource = "goat", initialPlugin = "", }) {
80
- const wallet = useActiveWallet();
81
- const account = useActiveAccount();
82
- const { paymentChainId } = useChain();
83
- const { composeKeyToken, ensureComposeKeyToken } = useSession();
84
- const resultsEndRef = useRef(null);
85
- // Common state
86
- const [pluginSource, setPluginSource] = useState(initialSource);
87
- const [pluginsLoading, setPluginsLoading] = useState(false);
88
- const [selectedTool, setSelectedTool] = useState("");
89
- const [toolArgs, setToolArgs] = useState("{}");
90
- const [toolSchema, setToolSchema] = useState(null);
91
- const [pluginResults, setPluginResults] = useState([]);
92
- const [executingPlugin, setExecutingPlugin] = useState(false);
93
- const [pluginError, setPluginError] = useState(null);
94
- // GOAT state
95
- const [goatStatus, setGoatStatus] = useState(null);
96
- const [pluginTools, setPluginTools] = useState([]);
97
- const [selectedPlugin, setSelectedPlugin] = useState(initialSource !== "mcp" ? initialPlugin : "");
98
- // MCP state - fetched from centralized registry
99
- const mcpRegistryOptions = useMemo(() => ({ origin: 'mcp', available: true }), []);
100
- const { data: mcpRegistryData, isLoading: mcpLoading, forceRefresh: forceRefreshMcpRegistry } = useRegistryServers(mcpRegistryOptions);
101
- const mcpServers = mcpRegistryData?.servers ?? [];
102
- const [mcpServerSearch, setMcpServerSearch] = useState("");
103
- const [mcpTools, setMcpTools] = useState([]);
104
- const [selectedMcpServer, setSelectedMcpServer] = useState(initialSource === "mcp" && initialPlugin ? `mcp:${initialPlugin}` : "");
105
- // Eliza state
106
- const [elizaPlugins, setElizaPlugins] = useState([]);
107
- const [elizaActions, setElizaActions] = useState([]);
108
- const [selectedElizaPlugin, setSelectedElizaPlugin] = useState(initialSource === "eliza" ? initialPlugin : "");
109
- const [selectedElizaAction, setSelectedElizaAction] = useState("");
110
- // Filtered MCP servers
111
- const MAX_MCP_DROPDOWN_ITEMS = 50;
112
- const filteredMcpServers = useMemo(() => {
113
- if (!mcpServerSearch.trim()) {
114
- return mcpServers.slice(0, MAX_MCP_DROPDOWN_ITEMS);
115
- }
116
- const query = mcpServerSearch.toLowerCase().trim();
117
- return mcpServers
118
- .filter(s => s.name?.toLowerCase().includes(query) ||
119
- s.slug?.toLowerCase().includes(query) ||
120
- s.description?.toLowerCase().includes(query))
121
- .slice(0, MAX_MCP_DROPDOWN_ITEMS);
122
- }, [mcpServers, mcpServerSearch]);
123
- // ==========================================================================
124
- // GOAT Handlers
125
- // ==========================================================================
126
- const fetchPluginStatus = async () => {
127
- setPluginsLoading(true);
128
- try {
129
- const response = await fetch(`${CONNECTOR_URL}/plugins/status`);
130
- if (!response.ok)
131
- throw new Error(`Failed to fetch status: ${response.status}`);
132
- const data = await response.json();
133
- setGoatStatus(data);
134
- if (!selectedPlugin && data.plugins?.length > 0) {
135
- setSelectedPlugin(data.plugins[0].id);
136
- }
137
- }
138
- catch (err) {
139
- console.error("Failed to fetch plugin status:", err);
140
- setPluginError(err instanceof Error ? err.message : "Failed to connect to plugin server");
141
- }
142
- finally {
143
- setPluginsLoading(false);
144
- }
145
- };
146
- const fetchPluginTools = async (pluginId) => {
147
- try {
148
- const response = await fetch(`${CONNECTOR_URL}/plugins/${encodeURIComponent(pluginId)}/tools`);
149
- if (!response.ok)
150
- throw new Error(`Failed to fetch tools: ${response.status}`);
151
- const data = await response.json();
152
- setPluginTools(data.tools || []);
153
- if (data.tools?.length > 0) {
154
- setSelectedTool(data.tools[0].name);
155
- setToolSchema(data.tools[0].parameters);
156
- const defaultArgs = data.tools[0].example || generateDefaultArgs(data.tools[0].parameters);
157
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
158
- }
159
- }
160
- catch (err) {
161
- console.error("Failed to fetch plugin tools:", err);
162
- setPluginTools([]);
163
- }
164
- };
165
- const currentTool = pluginTools.find(t => t.name === selectedTool);
166
- const handleToolSelect = useCallback((toolName) => {
167
- setSelectedTool(toolName);
168
- const tool = pluginTools.find(t => t.name === toolName);
169
- if (tool) {
170
- setToolSchema(tool.parameters);
171
- const defaultArgs = tool.example || generateDefaultArgs(tool.parameters);
172
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
173
- }
174
- }, [pluginTools]);
175
- const handlePluginChange = useCallback((pluginId) => {
176
- setSelectedPlugin(pluginId);
177
- setSelectedTool("");
178
- setToolSchema(null);
179
- setToolArgs("{}");
180
- }, []);
181
- const handleExecutePlugin = useCallback(async () => {
182
- if (!selectedPlugin || !selectedTool || executingPlugin)
183
- return;
184
- if (!wallet) {
185
- setPluginError("Connect wallet to execute plugins");
186
- return;
187
- }
188
- let args = {};
189
- try {
190
- args = JSON.parse(toolArgs);
191
- }
192
- catch (e) {
193
- setPluginError(`Invalid JSON: ${e instanceof Error ? e.message : "Parse error"}`);
194
- return;
195
- }
196
- setExecutingPlugin(true);
197
- setPluginError(null);
198
- try {
199
- const activeComposeKeyToken = composeKeyToken || await ensureComposeKeyToken();
200
- // Chain-aware payment: routes to selected chain
201
- const fetchWithPayment = createPaymentFetch({
202
- chainId: paymentChainId,
203
- account: account,
204
- wallet,
205
- maxValue: BigInt(inferencePriceWei),
206
- sessionToken: activeComposeKeyToken || undefined,
207
- });
208
- const response = await fetchWithPayment(`${CONNECTOR_URL}/plugins/${encodeURIComponent(selectedPlugin)}/execute`, {
209
- method: "POST",
210
- headers: { "Content-Type": "application/json" },
211
- body: JSON.stringify({ tool: selectedTool, args }),
212
- });
213
- const data = await response.json();
214
- const result = {
215
- success: data.success ?? response.ok,
216
- pluginId: selectedPlugin,
217
- tool: selectedTool,
218
- result: data.result,
219
- error: data.error || data.hint,
220
- txHash: data.txHash,
221
- explorer: data.explorer,
222
- executedBy: data.executedBy,
223
- source: "goat",
224
- };
225
- setPluginResults(prev => [...prev, result]);
226
- }
227
- catch (err) {
228
- const errorMsg = err instanceof Error ? err.message : "Unknown error";
229
- setPluginError(errorMsg);
230
- setPluginResults(prev => [
231
- ...prev,
232
- { success: false, pluginId: selectedPlugin, tool: selectedTool, error: errorMsg, source: "goat" },
233
- ]);
234
- }
235
- finally {
236
- setExecutingPlugin(false);
237
- }
238
- }, [selectedPlugin, selectedTool, toolArgs, executingPlugin, wallet, paymentChainId, account, composeKeyToken, ensureComposeKeyToken]);
239
- // ==========================================================================
240
- // MCP Handlers
241
- // ==========================================================================
242
- const fetchMcpTools = async (slug) => {
243
- setPluginsLoading(true);
244
- try {
245
- const response = await fetch(`${CONNECTOR_URL}/mcp/servers/${encodeURIComponent(slug)}/tools`);
246
- if (!response.ok)
247
- throw new Error(`Failed to fetch MCP tools: ${response.status}`);
248
- const data = await response.json();
249
- setMcpTools(data.tools || []);
250
- if (data.tools?.length > 0) {
251
- setSelectedTool(data.tools[0].name);
252
- setToolSchema(data.tools[0].inputSchema);
253
- const defaultArgs = generateDefaultArgs(data.tools[0].inputSchema);
254
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
255
- }
256
- }
257
- catch (err) {
258
- console.error("Failed to fetch MCP tools:", err);
259
- setMcpTools([]);
260
- setPluginError(err instanceof Error ? err.message : "Failed to fetch tools");
261
- }
262
- finally {
263
- setPluginsLoading(false);
264
- }
265
- };
266
- const handleMcpServerChange = useCallback((registryId) => {
267
- setSelectedMcpServer(registryId);
268
- setSelectedTool("");
269
- setToolSchema(null);
270
- setToolArgs("{}");
271
- setMcpTools([]);
272
- }, []);
273
- const handleMcpToolSelect = useCallback((toolName) => {
274
- setSelectedTool(toolName);
275
- const tool = mcpTools.find(t => t.name === toolName);
276
- if (tool) {
277
- setToolSchema(tool.inputSchema);
278
- const defaultArgs = generateDefaultArgs(tool.inputSchema);
279
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
280
- }
281
- }, [mcpTools]);
282
- const currentMcpTool = mcpTools.find(t => t.name === selectedTool);
283
- const handleExecuteMcpTool = useCallback(async () => {
284
- if (!selectedMcpServer || !selectedTool || executingPlugin)
285
- return;
286
- if (!wallet) {
287
- setPluginError("Connect wallet to execute MCP tools");
288
- return;
289
- }
290
- let args = {};
291
- try {
292
- args = JSON.parse(toolArgs);
293
- }
294
- catch (e) {
295
- setPluginError(`Invalid JSON: ${e instanceof Error ? e.message : "Parse error"}`);
296
- return;
297
- }
298
- setExecutingPlugin(true);
299
- setPluginError(null);
300
- try {
301
- const activeComposeKeyToken = composeKeyToken || await ensureComposeKeyToken();
302
- // Chain-aware payment: routes to selected chain
303
- const fetchWithPayment = createPaymentFetch({
304
- chainId: paymentChainId,
305
- account: account,
306
- wallet,
307
- maxValue: BigInt(inferencePriceWei),
308
- sessionToken: activeComposeKeyToken || undefined,
309
- });
310
- const response = await fetchWithPayment(`${API_BASE}/api/mcp/servers/${encodeURIComponent(selectedMcpServer)}/call`, {
311
- method: "POST",
312
- headers: { "Content-Type": "application/json" },
313
- body: JSON.stringify({ tool: selectedTool, args }),
314
- });
315
- const data = await response.json();
316
- const result = {
317
- success: data.success ?? response.ok,
318
- pluginId: selectedMcpServer,
319
- tool: selectedTool,
320
- result: data.content,
321
- error: data.error || data.message,
322
- source: "mcp",
323
- };
324
- setPluginResults(prev => [...prev, result]);
325
- }
326
- catch (err) {
327
- const errorMsg = err instanceof Error ? err.message : "Unknown error";
328
- setPluginError(errorMsg);
329
- setPluginResults(prev => [
330
- ...prev,
331
- { success: false, pluginId: selectedMcpServer, tool: selectedTool, error: errorMsg, source: "mcp" },
332
- ]);
333
- }
334
- finally {
335
- setExecutingPlugin(false);
336
- }
337
- }, [selectedMcpServer, selectedTool, toolArgs, executingPlugin, wallet, paymentChainId, account, composeKeyToken, ensureComposeKeyToken]);
338
- // ==========================================================================
339
- // Eliza Handlers
340
- // ==========================================================================
341
- const fetchElizaPlugins = async () => {
342
- setPluginsLoading(true);
343
- try {
344
- const response = await fetch(`${CONNECTOR_URL}/eliza/plugins`);
345
- if (!response.ok)
346
- throw new Error(`Failed to fetch Eliza plugins: ${response.status}`);
347
- const data = await response.json();
348
- setElizaPlugins(data.plugins || []);
349
- }
350
- catch (err) {
351
- console.error("Failed to fetch Eliza plugins:", err);
352
- setPluginError(err instanceof Error ? err.message : "Failed to fetch Eliza plugins");
353
- }
354
- finally {
355
- setPluginsLoading(false);
356
- }
357
- };
358
- const fetchElizaActions = async (pluginId) => {
359
- setPluginsLoading(true);
360
- setElizaActions([]);
361
- try {
362
- const response = await fetch(`${CONNECTOR_URL}/eliza/plugins/${encodeURIComponent(pluginId)}/actions`);
363
- if (!response.ok) {
364
- const errorData = await response.json().catch(() => ({}));
365
- throw new Error(errorData.error || `Failed to fetch actions: ${response.status}`);
366
- }
367
- const data = await response.json();
368
- setElizaActions(data.actions || []);
369
- if (data.actions?.length > 0) {
370
- handleElizaActionChange(data.actions[0].name);
371
- }
372
- }
373
- catch (err) {
374
- console.error("Failed to fetch Eliza actions:", err);
375
- setPluginError(err instanceof Error ? err.message : "Failed to fetch actions");
376
- }
377
- finally {
378
- setPluginsLoading(false);
379
- }
380
- };
381
- const handleElizaPluginChange = (pluginId) => {
382
- setSelectedElizaPlugin(pluginId);
383
- setSelectedElizaAction("");
384
- setElizaActions([]);
385
- setSelectedTool("");
386
- setToolSchema(null);
387
- setToolArgs("{}");
388
- setPluginError(null);
389
- if (pluginId)
390
- fetchElizaActions(pluginId);
391
- };
392
- const handleElizaActionChange = (actionName) => {
393
- setSelectedElizaAction(actionName);
394
- setSelectedTool(actionName);
395
- setPluginError(null);
396
- const action = elizaActions.find(a => a.name === actionName);
397
- if (action) {
398
- const defaultArgs = {};
399
- for (const param of action.parameters) {
400
- if (param.example !== undefined) {
401
- defaultArgs[param.name] = param.example;
402
- }
403
- else if (param.default !== undefined) {
404
- defaultArgs[param.name] = param.default;
405
- }
406
- else if (param.required) {
407
- switch (param.type) {
408
- case "string":
409
- defaultArgs[param.name] = param.enum?.[0] || "";
410
- break;
411
- case "number":
412
- defaultArgs[param.name] = 0;
413
- break;
414
- case "boolean":
415
- defaultArgs[param.name] = false;
416
- break;
417
- case "array":
418
- defaultArgs[param.name] = [];
419
- break;
420
- case "object":
421
- defaultArgs[param.name] = {};
422
- break;
423
- }
424
- }
425
- }
426
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
427
- setToolSchema({
428
- properties: action.parameters.reduce((acc, p) => {
429
- acc[p.name] = { type: p.type, description: p.description, enum: p.enum, default: p.default };
430
- return acc;
431
- }, {}),
432
- required: action.parameters.filter(p => p.required).map(p => p.name),
433
- });
434
- }
435
- };
436
- const handleElizaExecution = useCallback(async () => {
437
- if (!selectedElizaPlugin || !selectedElizaAction || executingPlugin)
438
- return;
439
- if (!wallet) {
440
- setPluginError("Connect wallet to execute Eliza actions");
441
- return;
442
- }
443
- let params = {};
444
- try {
445
- params = JSON.parse(toolArgs);
446
- }
447
- catch (e) {
448
- setPluginError(`Invalid JSON: ${e instanceof Error ? e.message : "Parse error"}`);
449
- return;
450
- }
451
- setExecutingPlugin(true);
452
- setPluginError(null);
453
- try {
454
- const activeComposeKeyToken = composeKeyToken || await ensureComposeKeyToken();
455
- // Chain-aware payment: routes to selected chain
456
- const fetchWithPayment = createPaymentFetch({
457
- chainId: paymentChainId,
458
- account: account,
459
- wallet,
460
- maxValue: BigInt(inferencePriceWei),
461
- sessionToken: activeComposeKeyToken || undefined,
462
- });
463
- const response = await fetchWithPayment(`${CONNECTOR_URL}/eliza/plugins/${encodeURIComponent(selectedElizaPlugin)}/execute`, {
464
- method: "POST",
465
- headers: { "Content-Type": "application/json" },
466
- body: JSON.stringify({ action: selectedElizaAction, params }),
467
- });
468
- const data = await response.json();
469
- const result = {
470
- success: data.success ?? response.ok,
471
- pluginId: selectedElizaPlugin,
472
- tool: selectedElizaAction,
473
- result: data.result || data.text,
474
- error: data.error,
475
- source: "eliza",
476
- executionTime: data.executionTime,
477
- };
478
- setPluginResults(prev => [...prev, result]);
479
- }
480
- catch (err) {
481
- const errorMsg = err instanceof Error ? err.message : "Unknown error";
482
- setPluginError(errorMsg);
483
- setPluginResults(prev => [
484
- ...prev,
485
- { success: false, pluginId: selectedElizaPlugin, tool: selectedElizaAction, error: errorMsg, source: "eliza" },
486
- ]);
487
- }
488
- finally {
489
- setExecutingPlugin(false);
490
- }
491
- }, [selectedElizaPlugin, selectedElizaAction, toolArgs, executingPlugin, wallet, paymentChainId, account, composeKeyToken, ensureComposeKeyToken]);
492
- // ==========================================================================
493
- // Source Change Handler
494
- // ==========================================================================
495
- const handleSourceChange = useCallback((source) => {
496
- setPluginSource(source);
497
- setSelectedTool("");
498
- setToolSchema(null);
499
- setToolArgs("{}");
500
- setPluginError(null);
501
- if (source !== "goat")
502
- setSelectedPlugin("");
503
- if (source !== "mcp")
504
- setSelectedMcpServer("");
505
- if (source !== "eliza") {
506
- setSelectedElizaPlugin("");
507
- setSelectedElizaAction("");
508
- }
509
- }, []);
510
- const handleClearResults = useCallback(() => {
511
- setPluginResults([]);
512
- setPluginError(null);
513
- }, []);
514
- // ==========================================================================
515
- // Effects
516
- // ==========================================================================
517
- useEffect(() => {
518
- if (pluginSource === "goat" && !goatStatus) {
519
- fetchPluginStatus();
520
- }
521
- else if (pluginSource === "eliza" && elizaPlugins.length === 0) {
522
- fetchElizaPlugins();
523
- }
524
- }, [pluginSource, goatStatus, elizaPlugins.length]);
525
- useEffect(() => {
526
- if (selectedMcpServer && pluginSource === "mcp") {
527
- const slug = selectedMcpServer.replace(/^mcp:/, '');
528
- if (slug)
529
- fetchMcpTools(slug);
530
- }
531
- }, [selectedMcpServer, pluginSource]);
532
- useEffect(() => {
533
- if (selectedPlugin && pluginSource === "goat") {
534
- fetchPluginTools(selectedPlugin);
535
- }
536
- }, [selectedPlugin, pluginSource]);
537
- useEffect(() => {
538
- if (selectedElizaPlugin && pluginSource === "eliza") {
539
- fetchElizaActions(selectedElizaPlugin);
540
- }
541
- }, [selectedElizaPlugin, pluginSource]);
542
- useEffect(() => {
543
- resultsEndRef.current?.scrollIntoView({ behavior: "smooth" });
544
- }, [pluginResults]);
545
- // ==========================================================================
546
- // Render
547
- // ==========================================================================
548
- return (<div className="flex flex-col h-full">
549
- {/* Header: Source and Plugin/Server selectors */}
550
- <div className="shrink-0 p-3 lg:p-4 border-b border-zinc-800">
551
- <div className="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 flex-wrap">
552
- {/* Source selector */}
553
- <Select value={pluginSource} onValueChange={(v) => handleSourceChange(v)}>
554
- <SelectTrigger className="w-full sm:w-28 lg:w-32 bg-zinc-900 border-zinc-700 h-9">
555
- <SelectValue />
556
- </SelectTrigger>
557
- <SelectContent className="bg-zinc-900 border-zinc-700">
558
- <SelectItem value="goat">
559
- <div className="flex items-center gap-2">
560
- <Badge className="bg-green-500/20 text-green-400 border-green-500/40 text-[10px] px-1.5">GOAT</Badge>
561
- <span className="text-[10px] text-zinc-500">DeFi</span>
562
- </div>
563
- </SelectItem>
564
- <SelectItem value="mcp">
565
- <div className="flex items-center gap-2">
566
- <Badge className="bg-purple-500/20 text-purple-400 border-purple-500/40 text-[10px] px-1.5">MCP</Badge>
567
- <span className="text-[10px] text-zinc-500">Servers</span>
568
- </div>
569
- </SelectItem>
570
- <SelectItem value="eliza">
571
- <div className="flex items-center gap-2">
572
- <Badge className="bg-fuchsia-500/20 text-fuchsia-400 border-fuchsia-500/40 text-[10px] px-1.5">Eliza</Badge>
573
- <span className="text-[10px] text-zinc-500">AI Agents</span>
574
- </div>
575
- </SelectItem>
576
- </SelectContent>
577
- </Select>
578
-
579
- {/* GOAT Plugin selector */}
580
- {pluginSource === "goat" && (<>
581
- <Select value={selectedPlugin} onValueChange={handlePluginChange} disabled={!goatStatus?.plugins?.length}>
582
- <SelectTrigger className="w-full sm:w-40 lg:w-52 bg-zinc-900 border-zinc-700 h-9">
583
- <SelectValue placeholder={pluginsLoading ? "Loading..." : "Select plugin"}/>
584
- </SelectTrigger>
585
- <SelectContent className="bg-zinc-900 border-zinc-700 max-h-80">
586
- {!goatStatus?.plugins?.length ? (<div className="p-2 text-zinc-500 text-sm">No plugins available</div>) : (goatStatus.plugins.map((plugin) => (<SelectItem key={plugin.id} value={plugin.id}>
587
- <div className="flex items-center gap-2">
588
- <span className="font-mono text-xs">{plugin.name}</span>
589
- <Badge variant="outline" className="text-[9px] px-1 py-0">{plugin.toolCount}</Badge>
590
- </div>
591
- </SelectItem>)))}
592
- </SelectContent>
593
- </Select>
594
-
595
- <Select value={selectedTool} onValueChange={handleToolSelect} disabled={pluginTools.length === 0}>
596
- <SelectTrigger className="w-full sm:flex-1 lg:w-56 xl:w-72 bg-zinc-900 border-zinc-700 h-9">
597
- <SelectValue placeholder={pluginTools.length === 0 ? "Select plugin first" : "Select tool"}/>
598
- </SelectTrigger>
599
- <SelectContent className="bg-zinc-900 border-zinc-700 max-h-96">
600
- {pluginTools.length === 0 ? (<div className="p-2 text-zinc-500 text-sm">No tools available</div>) : (pluginTools.map((tool) => (<SelectItem key={tool.name} value={tool.name}>
601
- <div className="flex flex-col py-0.5">
602
- <span className="font-mono text-xs">{tool.name}</span>
603
- <span className="text-[10px] text-zinc-500 truncate max-w-64">{tool.description}</span>
604
- </div>
605
- </SelectItem>)))}
606
- </SelectContent>
607
- </Select>
608
-
609
- {goatStatus && (<div className="flex items-center gap-2 text-xs">
610
- <div className={cn("w-2 h-2 rounded-full", goatStatus.initialized ? "bg-emerald-500" : "bg-red-500")}/>
611
- <span className="text-zinc-500">
612
- {goatStatus.initialized ? `${goatStatus.totalTools} tools • ${goatStatus.chain}` : "Offline"}
613
- </span>
614
- </div>)}
615
- </>)}
616
-
617
- {/* MCP Server selector */}
618
- {pluginSource === "mcp" && (<>
619
- <Popover>
620
- <PopoverTrigger asChild>
621
- <Button variant="outline" role="combobox" className="w-full sm:w-40 lg:w-52 bg-zinc-900 border-zinc-700 h-9 justify-between text-left font-normal">
622
- <span className="truncate font-mono text-xs">
623
- {mcpLoading
624
- ? "Loading..."
625
- : selectedMcpServer
626
- ? mcpServers.find(s => s.registryId === selectedMcpServer)?.name || selectedMcpServer.replace(/^mcp:/, '')
627
- : "Select server..."}
628
- </span>
629
- <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50"/>
630
- </Button>
631
- </PopoverTrigger>
632
- <PopoverContent className="w-[300px] p-0 bg-zinc-900 border-zinc-700" align="start">
633
- <Command className="bg-zinc-900" shouldFilter={false}>
634
- <CommandInput placeholder="Search servers..." className="h-9" value={mcpServerSearch} onValueChange={setMcpServerSearch}/>
635
- <CommandList className="max-h-[300px]">
636
- {mcpLoading ? (<div className="p-4 text-center text-zinc-500">
637
- <Loader2 className="h-4 w-4 animate-spin mx-auto mb-2"/>
638
- Loading servers...
639
- </div>) : filteredMcpServers.length === 0 ? (<CommandEmpty>No servers match "{mcpServerSearch}"</CommandEmpty>) : (<CommandGroup heading={mcpServerSearch ? `${filteredMcpServers.length} matches` : `Showing ${filteredMcpServers.length} of ${mcpServers.length.toLocaleString()}`}>
640
- {filteredMcpServers.map((server) => (<CommandItem key={server.registryId} value={server.registryId} onSelect={() => {
641
- handleMcpServerChange(server.registryId);
642
- setMcpServerSearch("");
643
- }} className="cursor-pointer">
644
- <div className="flex items-center gap-2 w-full">
645
- <Check className={cn("h-4 w-4 shrink-0", selectedMcpServer === server.registryId ? "opacity-100" : "opacity-0")}/>
646
- <div className="flex flex-col min-w-0 flex-1">
647
- <span className="font-mono text-xs truncate">{server.name || server.slug}</span>
648
- <span className="text-[10px] text-zinc-500 truncate">{server.description || "No description"}</span>
649
- </div>
650
- {server.transport === 'http' && (<Badge variant="outline" className="text-[9px] px-1 py-0 border-cyan-500/50 text-cyan-400 shrink-0">remote</Badge>)}
651
- </div>
652
- </CommandItem>))}
653
- </CommandGroup>)}
654
- </CommandList>
655
- </Command>
656
- </PopoverContent>
657
- </Popover>
658
-
659
- <Select value={selectedTool} onValueChange={handleMcpToolSelect} disabled={mcpTools.length === 0}>
660
- <SelectTrigger className="w-full sm:flex-1 lg:w-56 xl:w-72 bg-zinc-900 border-zinc-700 h-9">
661
- <SelectValue placeholder={mcpTools.length === 0 ? "Select server first" : "Select tool"}/>
662
- </SelectTrigger>
663
- <SelectContent className="bg-zinc-900 border-zinc-700 max-h-96">
664
- {mcpTools.length === 0 ? (<div className="p-2 text-zinc-500 text-sm">No tools available</div>) : (mcpTools.map((tool) => (<SelectItem key={tool.name} value={tool.name}>
665
- <div className="flex flex-col py-0.5">
666
- <span className="font-mono text-xs">{tool.name}</span>
667
- <span className="text-[10px] text-zinc-500 truncate max-w-48 sm:max-w-64">{tool.description || "No description"}</span>
668
- </div>
669
- </SelectItem>)))}
670
- </SelectContent>
671
- </Select>
672
-
673
- <div className="flex items-center gap-2 text-[10px] sm:text-xs shrink-0">
674
- <div className={cn("w-1.5 h-1.5 sm:w-2 sm:h-2 rounded-full", mcpServers.length > 0 ? "bg-purple-500" : "bg-zinc-500")}/>
675
- <span className="text-zinc-500">
676
- {mcpServers.length > 0 ? `${mcpServers.length.toLocaleString()} servers` : "Loading..."}
677
- </span>
678
- </div>
679
- </>)}
680
-
681
- {/* Eliza Plugin selector */}
682
- {pluginSource === "eliza" && (<>
683
- <Select value={selectedElizaPlugin} onValueChange={handleElizaPluginChange} disabled={elizaPlugins.length === 0}>
684
- <SelectTrigger className="w-full sm:w-40 lg:w-52 bg-zinc-900 border-zinc-700 h-9">
685
- <SelectValue placeholder={pluginsLoading ? "Loading..." : "Select plugin"}/>
686
- </SelectTrigger>
687
- <SelectContent className="bg-zinc-900 border-zinc-700 max-h-80">
688
- {elizaPlugins.length === 0 ? (<div className="p-2 text-zinc-500 text-sm">No plugins available</div>) : (elizaPlugins.map((plugin) => (<SelectItem key={plugin.id} value={plugin.id}>
689
- <div className="flex items-center gap-2">
690
- <span className="font-mono text-xs truncate max-w-24 sm:max-w-40">{plugin.id}</span>
691
- {plugin.version && (<Badge variant="outline" className="text-[9px] px-1 py-0 text-zinc-500 hidden sm:flex">{plugin.version}</Badge>)}
692
- </div>
693
- </SelectItem>)))}
694
- </SelectContent>
695
- </Select>
696
-
697
- <Select value={selectedElizaAction} onValueChange={handleElizaActionChange} disabled={elizaActions.length === 0}>
698
- <SelectTrigger className="w-full sm:flex-1 lg:w-56 xl:w-72 bg-zinc-900 border-zinc-700 h-9">
699
- <SelectValue placeholder={elizaActions.length === 0 ? "Select plugin first" : "Select action"}/>
700
- </SelectTrigger>
701
- <SelectContent className="bg-zinc-900 border-zinc-700 max-h-96">
702
- {elizaActions.length === 0 ? (<div className="p-2 text-zinc-500 text-sm">No actions available</div>) : (elizaActions.map((action) => (<SelectItem key={action.name} value={action.name}>
703
- <div className="flex flex-col py-0.5">
704
- <span className="font-mono text-xs">{action.name}</span>
705
- <span className="text-[10px] text-zinc-500 truncate max-w-48 sm:max-w-64">{action.description}</span>
706
- </div>
707
- </SelectItem>)))}
708
- </SelectContent>
709
- </Select>
710
-
711
- <div className="flex items-center gap-2 text-[10px] sm:text-xs shrink-0">
712
- <div className={cn("w-1.5 h-1.5 sm:w-2 sm:h-2 rounded-full", elizaPlugins.length > 0 ? "bg-fuchsia-500" : "bg-zinc-500")}/>
713
- <span className="text-zinc-500">
714
- {elizaPlugins.length > 0 ? `${elizaPlugins.length} plugins` : "Loading..."}
715
- </span>
716
- </div>
717
- </>)}
718
-
719
- <Button variant="ghost" size="icon" onClick={pluginSource === "goat" ? fetchPluginStatus : pluginSource === "eliza" ? fetchElizaPlugins : () => forceRefreshMcpRegistry()} disabled={pluginsLoading || mcpLoading} className="text-zinc-400 hover:text-white shrink-0 h-8 w-8 sm:h-9 sm:w-9" title="Refresh">
720
- <RefreshCw className={cn("h-3.5 w-3.5 sm:h-4 sm:w-4", (pluginsLoading || mcpLoading) && "animate-spin")}/>
721
- </Button>
722
- </div>
723
- </div>
724
-
725
- {/* Results Area */}
726
- <ScrollArea className="flex-1 p-4 min-h-0">
727
- <div className="space-y-4 max-w-4xl mx-auto">
728
- {pluginResults.length === 0 ? (<div className="text-center py-8 text-zinc-500">
729
- <Plug className="h-12 w-12 mx-auto mb-4 opacity-50"/>
730
- <p className="text-lg">
731
- Test {pluginSource === "goat" ? "GOAT DeFi" : pluginSource === "mcp" ? "MCP Server" : "Eliza AI"} Actions
732
- </p>
733
- <p className="text-sm mt-2">
734
- {sessionActive
735
- ? `Budget: ${formatBudget(budgetRemaining)} • Select a ${pluginSource === "goat" ? "plugin" : pluginSource === "mcp" ? "server" : "plugin"} and ${pluginSource === "eliza" ? "action" : "tool"} to execute`
736
- : "Start a session to begin"}
737
- </p>
738
-
739
- {pluginSource === "goat" && goatStatus?.plugins && goatStatus.plugins.length > 0 && (<div className="mt-6 text-left max-w-2xl mx-auto">
740
- <p className="text-xs text-zinc-600 uppercase tracking-wider mb-3">
741
- {goatStatus.plugins.length} Plugins • {goatStatus.totalTools} Tools
742
- </p>
743
- <div className="grid grid-cols-2 gap-2 text-xs">
744
- {goatStatus.plugins.map((plugin) => (<button key={plugin.id} onClick={() => handlePluginChange(plugin.id)} className={cn("bg-zinc-900 rounded-lg p-3 border text-left transition-colors", selectedPlugin === plugin.id
745
- ? "border-green-500/50 bg-green-950/20"
746
- : "border-zinc-800 hover:border-zinc-700")}>
747
- <div className="flex items-center justify-between mb-1">
748
- <span className="text-green-400 font-mono text-xs">{plugin.name}</span>
749
- <Badge variant="outline" className="text-[9px]">{plugin.toolCount}</Badge>
750
- </div>
751
- <p className="text-zinc-500 text-[10px] line-clamp-2">{plugin.description}</p>
752
- </button>))}
753
- </div>
754
- </div>)}
755
-
756
- {pluginSource === "mcp" && mcpServers.length > 0 && (<div className="mt-6 text-left max-w-md mx-auto">
757
- <p className="text-xs text-zinc-600 uppercase tracking-wider mb-3 text-center">
758
- {mcpServers.length.toLocaleString()} MCP Servers Available
759
- </p>
760
- <p className="text-zinc-500 text-sm text-center">
761
- Use the <span className="text-purple-400 font-mono">Select server</span> dropdown above to search and select from all available servers.
762
- </p>
763
- </div>)}
764
-
765
- {pluginSource === "eliza" && elizaPlugins.length > 0 && (<div className="mt-6 text-left max-w-2xl mx-auto">
766
- <p className="text-xs text-zinc-600 uppercase tracking-wider mb-3">
767
- {elizaPlugins.length} ElizaOS Plugins Available
768
- </p>
769
- <div className="grid grid-cols-2 gap-2 text-xs">
770
- {elizaPlugins.slice(0, 8).map((plugin) => (<button key={plugin.id} onClick={() => handleElizaPluginChange(plugin.id)} className={cn("bg-zinc-900 rounded-lg p-3 border text-left transition-colors", selectedElizaPlugin === plugin.id
771
- ? "border-fuchsia-500/50 bg-fuchsia-950/20"
772
- : "border-zinc-800 hover:border-zinc-700")}>
773
- <div className="flex items-center justify-between mb-1">
774
- <span className="text-fuchsia-400 font-mono text-xs">{plugin.id}</span>
775
- {plugin.version && (<Badge variant="outline" className="text-[9px] text-zinc-500">{plugin.version}</Badge>)}
776
- </div>
777
- <p className="text-zinc-500 text-[10px] line-clamp-2">{plugin.description || "No description"}</p>
778
- </button>))}
779
- </div>
780
- </div>)}
781
-
782
- {pluginsLoading && (<div className="mt-6">
783
- <Loader2 className="h-5 w-5 animate-spin mx-auto text-cyan-400"/>
784
- <p className="mt-2 text-sm">
785
- Loading {pluginSource === "goat" ? "plugins" : pluginSource === "mcp" ? "servers" : "plugins"}...
786
- </p>
787
- </div>)}
788
- </div>) : (pluginResults.map((result, index) => (<div key={index} className={cn("rounded-lg p-4 border", result.success
789
- ? "bg-emerald-950/30 border-emerald-800"
790
- : "bg-red-950/30 border-red-800")}>
791
- <div className="flex items-center gap-2 mb-2 flex-wrap">
792
- <Terminal className="h-4 w-4 text-zinc-400"/>
793
- <Badge className={cn("text-[10px] px-1.5", result.source === "mcp"
794
- ? "bg-purple-500/20 text-purple-400 border-purple-500/40"
795
- : result.source === "eliza"
796
- ? "bg-fuchsia-500/20 text-fuchsia-400 border-fuchsia-500/40"
797
- : "bg-green-500/20 text-green-400 border-green-500/40")}>
798
- {result.source === "mcp" ? "MCP" : result.source === "eliza" ? "Eliza" : "GOAT"}
799
- </Badge>
800
- <span className="font-mono text-sm text-zinc-300">
801
- {result.pluginId}/{result.tool}
802
- </span>
803
- <Badge variant={result.success ? "default" : "destructive"} className="text-xs">
804
- {result.success ? "Success" : "Failed"}
805
- </Badge>
806
- {result.explorer && (<a href={result.explorer} target="_blank" rel="noopener noreferrer" className="text-xs text-cyan-400 hover:underline flex items-center gap-1">
807
- View TX <ExternalLink className="h-3 w-3"/>
808
- </a>)}
809
- {result.executedBy && (<span className="text-[10px] text-zinc-600">
810
- by {result.executedBy.slice(0, 6)}...{result.executedBy.slice(-4)}
811
- </span>)}
812
- </div>
813
- <pre className="text-xs text-zinc-400 overflow-auto max-h-48 font-mono bg-zinc-900/50 rounded p-2">
814
- {result.error || JSON.stringify(result.result, null, 2)}
815
- </pre>
816
- </div>)))}
817
- <div ref={resultsEndRef}/>
818
- </div>
819
- </ScrollArea>
820
-
821
- {/* Input with schema hints */}
822
- <div className="shrink-0 border-t border-zinc-800 p-4">
823
- <div className="max-w-4xl mx-auto space-y-3">
824
- {/* Tool/Action description & schema hint */}
825
- {(pluginSource === "goat" ? currentTool : pluginSource === "mcp" ? currentMcpTool : elizaActions.find(a => a.name === selectedElizaAction)) && (<div className="bg-zinc-900/50 rounded-lg p-3 border border-zinc-800">
826
- <div className="flex items-center gap-2 mb-2">
827
- <Terminal className={cn("h-4 w-4", pluginSource === "goat" ? "text-green-400" : pluginSource === "mcp" ? "text-purple-400" : "text-fuchsia-400")}/>
828
- <Badge className={cn("text-[10px] px-1.5", pluginSource === "goat"
829
- ? "bg-green-500/20 text-green-400 border-green-500/40"
830
- : pluginSource === "mcp"
831
- ? "bg-purple-500/20 text-purple-400 border-purple-500/40"
832
- : "bg-fuchsia-500/20 text-fuchsia-400 border-fuchsia-500/40")}>
833
- {pluginSource === "goat" ? "GOAT" : pluginSource === "mcp" ? "MCP" : "Eliza"}
834
- </Badge>
835
- <span className={cn("font-mono text-sm", pluginSource === "goat" ? "text-green-400" : pluginSource === "mcp" ? "text-purple-400" : "text-fuchsia-400")}>
836
- {pluginSource === "goat"
837
- ? currentTool?.name
838
- : pluginSource === "mcp"
839
- ? currentMcpTool?.name
840
- : elizaActions.find(a => a.name === selectedElizaAction)?.name}
841
- </span>
842
- </div>
843
- <p className="text-xs text-zinc-400 mb-2">
844
- {pluginSource === "goat"
845
- ? currentTool?.description
846
- : pluginSource === "mcp"
847
- ? (currentMcpTool?.description || "No description available")
848
- : (elizaActions.find(a => a.name === selectedElizaAction)?.description || "No description available")}
849
- </p>
850
- {toolSchema && (<div className="mt-2 pt-2 border-t border-zinc-800">
851
- <p className="text-[10px] text-zinc-500 uppercase mb-1">Parameters (* = required)</p>
852
- <pre className="text-[10px] text-zinc-500 font-mono whitespace-pre-wrap">
853
- {formatSchemaHint(toolSchema)}
854
- </pre>
855
- </div>)}
856
- </div>)}
857
-
858
- <div className="flex gap-2">
859
- <Button variant="ghost" size="icon" onClick={handleClearResults} className="text-zinc-400 hover:text-white shrink-0" title="Clear results">
860
- <Trash2 className="h-4 w-4"/>
861
- </Button>
862
- <div className="flex-1 relative">
863
- <Textarea value={toolArgs} onChange={(e) => setToolArgs(e.target.value)} placeholder='{"key": "value"}' className="bg-zinc-900 border-zinc-700 font-mono text-sm min-h-20 pr-20"/>
864
- <div className="absolute right-2 top-2 flex gap-1">
865
- <Button variant="ghost" size="sm" onClick={() => {
866
- if (pluginSource === "goat" && currentTool) {
867
- const defaultArgs = currentTool.example || generateDefaultArgs(currentTool.parameters);
868
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
869
- }
870
- else if (pluginSource === "mcp" && currentMcpTool) {
871
- const defaultArgs = generateDefaultArgs(currentMcpTool.inputSchema);
872
- setToolArgs(JSON.stringify(defaultArgs, null, 2));
873
- }
874
- }} className="h-6 px-2 text-[10px] text-zinc-500 hover:text-white" title="Reset to defaults">
875
- Reset
876
- </Button>
877
- </div>
878
- </div>
879
- <Button onClick={pluginSource === "goat"
880
- ? handleExecutePlugin
881
- : pluginSource === "mcp"
882
- ? handleExecuteMcpTool
883
- : handleElizaExecution} disabled={!sessionActive ||
884
- executingPlugin ||
885
- !selectedTool ||
886
- (pluginSource === "goat" ? !selectedPlugin : pluginSource === "mcp" ? !selectedMcpServer : !selectedElizaPlugin)} className={cn("h-auto px-6", pluginSource === "goat"
887
- ? "bg-green-600 hover:bg-green-700"
888
- : pluginSource === "mcp"
889
- ? "bg-purple-600 hover:bg-purple-700"
890
- : "bg-fuchsia-600 hover:bg-fuchsia-700")}>
891
- {executingPlugin ? (<Loader2 className="h-4 w-4 animate-spin"/>) : (<>
892
- <Play className="h-4 w-4 mr-2"/>
893
- Execute
894
- </>)}
895
- </Button>
896
- </div>
897
- {pluginError && (<div className="p-3 rounded-lg bg-red-950/30 border border-red-800">
898
- <p className="text-red-400 text-sm flex items-start gap-2">
899
- <AlertCircle className="h-4 w-4 mt-0.5 shrink-0"/>
900
- {pluginError}
901
- </p>
902
- </div>)}
903
- </div>
904
- </div>
905
- </div>);
906
- }
907
- //# sourceMappingURL=plugin-tester.js.map