@elizaos/app-core 2.0.0-alpha.74 → 2.0.0-alpha.76

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 (1183) hide show
  1. package/App.d.ts.map +1 -0
  2. package/{dist/App.js → App.js} +3 -3
  3. package/{dist/components → components}/AdvancedPageView.d.ts.map +1 -1
  4. package/{dist/components → components}/AdvancedPageView.js +0 -10
  5. package/{dist/components → components}/CharacterView.d.ts.map +1 -1
  6. package/components/CharacterView.js +685 -0
  7. package/{dist/components → components}/ChatComposer.d.ts.map +1 -1
  8. package/{dist/components → components}/ChatComposer.js +4 -4
  9. package/{dist/components → components}/ChatView.d.ts.map +1 -1
  10. package/{dist/components → components}/ChatView.js +15 -0
  11. package/{dist/components → components}/CompanionView.js +1 -1
  12. package/{dist/components → components}/ConfigPageView.js +1 -1
  13. package/{dist/components → components}/ElizaCloudDashboard.js +1 -1
  14. package/{dist/components → components}/FlaminaGuide.js +1 -1
  15. package/{dist/components → components}/OnboardingWizard.d.ts.map +1 -1
  16. package/{dist/components → components}/OnboardingWizard.js +3 -2
  17. package/{dist/components → components}/PluginsView.d.ts.map +1 -1
  18. package/{dist/components → components}/PluginsView.js +1 -5
  19. package/{dist/components → components}/avatar/VrmEngine.d.ts +13 -0
  20. package/{dist/components → components}/avatar/VrmEngine.d.ts.map +1 -1
  21. package/{dist/components → components}/avatar/VrmEngine.js +66 -0
  22. package/{dist/components → components}/avatar/VrmViewer.d.ts +15 -0
  23. package/{dist/components → components}/avatar/VrmViewer.d.ts.map +1 -1
  24. package/{dist/components → components}/avatar/VrmViewer.js +56 -1
  25. package/{src/components/index.ts → components/index.d.ts} +1 -1
  26. package/{dist/components → components}/index.d.ts.map +1 -1
  27. package/{dist/components → components}/index.js +0 -1
  28. package/{dist/components → components}/onboarding/ConnectionStep.d.ts.map +1 -1
  29. package/{dist/components → components}/onboarding/ConnectionStep.js +12 -7
  30. package/{dist/components → components}/permissions/StreamingPermissions.d.ts.map +1 -1
  31. package/{dist/components → components}/permissions/StreamingPermissions.js +1 -1
  32. package/{dist/components → components}/ui-switch.js +4 -4
  33. package/{dist/i18n → i18n}/locales/en.json +45 -1
  34. package/{src/i18n → i18n}/locales/es.json +41 -0
  35. package/{dist/i18n → i18n}/locales/ko.json +41 -0
  36. package/{dist/i18n → i18n}/locales/pt.json +41 -0
  37. package/{dist/i18n → i18n}/locales/zh-CN.json +41 -0
  38. package/package.json +143 -53
  39. package/{dist/state → state}/AppContext.d.ts.map +1 -1
  40. package/{dist/state → state}/AppContext.js +38 -16
  41. package/{dist/styles → styles}/anime.css +1 -4
  42. package/{dist/styles → styles}/onboarding-game.css +125 -9
  43. package/.turbo/turbo-build.log +0 -2
  44. package/.turbo/turbo-lint$colon$check.log +0 -2
  45. package/.turbo/turbo-typecheck.log +0 -1
  46. package/dist/App.d.ts.map +0 -1
  47. package/dist/components/CharacterView.js +0 -719
  48. package/dist/components/MiladyBar.d.ts +0 -2
  49. package/dist/components/MiladyBar.d.ts.map +0 -1
  50. package/dist/components/MiladyBar.js +0 -50
  51. package/dist/components/MiladyBarSettings.d.ts +0 -2
  52. package/dist/components/MiladyBarSettings.d.ts.map +0 -1
  53. package/dist/components/MiladyBarSettings.js +0 -513
  54. package/dist/components/SecurityPageView.d.ts +0 -2
  55. package/dist/components/SecurityPageView.d.ts.map +0 -1
  56. package/dist/components/SecurityPageView.js +0 -81
  57. package/dist/components/index.d.ts +0 -97
  58. package/dist/components/milady-bar/CloudCreditsChip.d.ts +0 -2
  59. package/dist/components/milady-bar/CloudCreditsChip.d.ts.map +0 -1
  60. package/dist/components/milady-bar/CloudCreditsChip.js +0 -25
  61. package/dist/components/milady-bar/ProviderDropdown.d.ts +0 -13
  62. package/dist/components/milady-bar/ProviderDropdown.d.ts.map +0 -1
  63. package/dist/components/milady-bar/ProviderDropdown.js +0 -68
  64. package/dist/components/milady-bar/WalletSummary.d.ts +0 -2
  65. package/dist/components/milady-bar/WalletSummary.d.ts.map +0 -1
  66. package/dist/components/milady-bar/WalletSummary.js +0 -37
  67. package/dist/components/milady-bar/index.d.ts +0 -4
  68. package/dist/components/milady-bar/index.d.ts.map +0 -1
  69. package/dist/components/milady-bar/index.js +0 -3
  70. package/dist/hooks/useMiladyBar.d.ts +0 -2
  71. package/dist/hooks/useMiladyBar.d.ts.map +0 -1
  72. package/dist/hooks/useMiladyBar.js +0 -472
  73. package/dist/i18n/locales/es.json +0 -1195
  74. package/dist/package.json +0 -180
  75. package/src/App.tsx +0 -504
  76. package/src/actions/character.test.ts +0 -139
  77. package/src/actions/character.ts +0 -334
  78. package/src/actions/chat-helpers.ts +0 -100
  79. package/src/actions/cloud.ts +0 -59
  80. package/src/actions/index.ts +0 -12
  81. package/src/actions/lifecycle.ts +0 -175
  82. package/src/actions/onboarding.ts +0 -38
  83. package/src/actions/triggers.ts +0 -190
  84. package/src/ambient.d.ts +0 -33
  85. package/src/api/client.ts +0 -5659
  86. package/src/api/index.ts +0 -1
  87. package/src/autonomy/index.ts +0 -477
  88. package/src/bridge/capacitor-bridge.ts +0 -295
  89. package/src/bridge/electrobun-rpc.ts +0 -78
  90. package/src/bridge/electrobun-runtime.ts +0 -28
  91. package/src/bridge/index.ts +0 -5
  92. package/src/bridge/native-plugins.ts +0 -138
  93. package/src/bridge/plugin-bridge.ts +0 -352
  94. package/src/bridge/storage-bridge.ts +0 -162
  95. package/src/chat/index.ts +0 -250
  96. package/src/coding/index.ts +0 -43
  97. package/src/components/AdvancedPageView.tsx +0 -382
  98. package/src/components/AgentActivityBox.tsx +0 -49
  99. package/src/components/ApiKeyConfig.tsx +0 -222
  100. package/src/components/AppsPageView.tsx +0 -52
  101. package/src/components/AppsView.tsx +0 -293
  102. package/src/components/AvatarLoader.tsx +0 -104
  103. package/src/components/AvatarSelector.tsx +0 -223
  104. package/src/components/BscTradePanel.tsx +0 -549
  105. package/src/components/BugReportModal.tsx +0 -499
  106. package/src/components/CharacterRoster.tsx +0 -143
  107. package/src/components/CharacterView.tsx +0 -1575
  108. package/src/components/ChatAvatar.test.ts +0 -97
  109. package/src/components/ChatAvatar.tsx +0 -147
  110. package/src/components/ChatComposer.tsx +0 -330
  111. package/src/components/ChatMessage.tsx +0 -448
  112. package/src/components/ChatModalView.test.tsx +0 -118
  113. package/src/components/ChatModalView.tsx +0 -125
  114. package/src/components/ChatView.tsx +0 -992
  115. package/src/components/CloudOnboarding.tsx +0 -81
  116. package/src/components/CloudSourceControls.tsx +0 -85
  117. package/src/components/CodingAgentSettingsSection.tsx +0 -537
  118. package/src/components/CommandPalette.tsx +0 -284
  119. package/src/components/CompanionSceneHost.tsx +0 -517
  120. package/src/components/CompanionShell.tsx +0 -31
  121. package/src/components/CompanionView.tsx +0 -110
  122. package/src/components/ConfigPageView.tsx +0 -763
  123. package/src/components/ConfigSaveFooter.tsx +0 -41
  124. package/src/components/ConfirmModal.tsx +0 -379
  125. package/src/components/ConnectionFailedBanner.tsx +0 -91
  126. package/src/components/ConnectorsPageView.tsx +0 -13
  127. package/src/components/ConversationsSidebar.tsx +0 -279
  128. package/src/components/CustomActionEditor.tsx +0 -1127
  129. package/src/components/CustomActionsPanel.tsx +0 -288
  130. package/src/components/CustomActionsView.tsx +0 -325
  131. package/src/components/DatabasePageView.tsx +0 -55
  132. package/src/components/DatabaseView.tsx +0 -814
  133. package/src/components/ElizaCloudDashboard.tsx +0 -1696
  134. package/src/components/EmotePicker.tsx +0 -529
  135. package/src/components/ErrorBoundary.tsx +0 -76
  136. package/src/components/FineTuningView.tsx +0 -1080
  137. package/src/components/FlaminaGuide.test.tsx +0 -61
  138. package/src/components/FlaminaGuide.tsx +0 -212
  139. package/src/components/GameView.tsx +0 -551
  140. package/src/components/GameViewOverlay.tsx +0 -133
  141. package/src/components/GlobalEmoteOverlay.tsx +0 -152
  142. package/src/components/Header.test.tsx +0 -413
  143. package/src/components/Header.tsx +0 -400
  144. package/src/components/HeartbeatsView.tsx +0 -1003
  145. package/src/components/InventoryView.tsx +0 -393
  146. package/src/components/KnowledgeView.tsx +0 -1128
  147. package/src/components/LanguageDropdown.tsx +0 -192
  148. package/src/components/LifoMonitorPanel.tsx +0 -196
  149. package/src/components/LifoSandboxView.tsx +0 -499
  150. package/src/components/LoadingScreen.tsx +0 -112
  151. package/src/components/LogsPageView.tsx +0 -17
  152. package/src/components/LogsView.tsx +0 -239
  153. package/src/components/MediaGalleryView.tsx +0 -431
  154. package/src/components/MediaSettingsSection.tsx +0 -893
  155. package/src/components/MessageContent.tsx +0 -815
  156. package/src/components/MiladyBar.tsx +0 -103
  157. package/src/components/MiladyBarSettings.tsx +0 -872
  158. package/src/components/OnboardingWizard.test.tsx +0 -104
  159. package/src/components/OnboardingWizard.tsx +0 -249
  160. package/src/components/PairingView.tsx +0 -109
  161. package/src/components/PermissionsSection.tsx +0 -1184
  162. package/src/components/PluginsPageView.tsx +0 -9
  163. package/src/components/PluginsView.tsx +0 -3129
  164. package/src/components/ProviderSwitcher.tsx +0 -903
  165. package/src/components/RestartBanner.tsx +0 -76
  166. package/src/components/RuntimeView.tsx +0 -460
  167. package/src/components/SaveCommandModal.tsx +0 -211
  168. package/src/components/SecretsView.tsx +0 -569
  169. package/src/components/SecurityPageView.tsx +0 -242
  170. package/src/components/SettingsView.tsx +0 -825
  171. package/src/components/ShellOverlays.tsx +0 -41
  172. package/src/components/ShortcutsOverlay.tsx +0 -155
  173. package/src/components/SkillsView.tsx +0 -1435
  174. package/src/components/StartupFailureView.tsx +0 -63
  175. package/src/components/StreamView.tsx +0 -481
  176. package/src/components/StripeEmbeddedCheckout.tsx +0 -155
  177. package/src/components/SubscriptionStatus.tsx +0 -640
  178. package/src/components/SystemWarningBanner.tsx +0 -71
  179. package/src/components/ThemeToggle.tsx +0 -103
  180. package/src/components/TrajectoriesView.tsx +0 -526
  181. package/src/components/TrajectoryDetailView.tsx +0 -426
  182. package/src/components/TriggersView.tsx +0 -1
  183. package/src/components/VectorBrowserView.tsx +0 -1633
  184. package/src/components/VoiceConfigView.tsx +0 -674
  185. package/src/components/VrmStage.test.ts +0 -176
  186. package/src/components/VrmStage.tsx +0 -309
  187. package/src/components/WhatsAppQrOverlay.tsx +0 -230
  188. package/src/components/__tests__/chainConfig.test.ts +0 -220
  189. package/src/components/apps/AppDetailPane.tsx +0 -242
  190. package/src/components/apps/AppsCatalogGrid.tsx +0 -137
  191. package/src/components/apps/extensions/registry.ts +0 -13
  192. package/src/components/apps/extensions/types.ts +0 -9
  193. package/src/components/apps/helpers.ts +0 -43
  194. package/src/components/avatar/VrmAnimationLoader.test.ts +0 -164
  195. package/src/components/avatar/VrmAnimationLoader.ts +0 -151
  196. package/src/components/avatar/VrmBlinkController.ts +0 -118
  197. package/src/components/avatar/VrmCameraManager.ts +0 -407
  198. package/src/components/avatar/VrmEngine.ts +0 -2767
  199. package/src/components/avatar/VrmFootShadow.ts +0 -96
  200. package/src/components/avatar/VrmViewer.tsx +0 -421
  201. package/src/components/avatar/__tests__/VrmCameraManager.test.ts +0 -168
  202. package/src/components/avatar/__tests__/VrmEngine.test.ts +0 -1574
  203. package/src/components/avatar/mixamoVRMRigMap.ts +0 -62
  204. package/src/components/avatar/retargetMixamoFbxToVrm.ts +0 -144
  205. package/src/components/avatar/retargetMixamoGltfToVrm.ts +0 -119
  206. package/src/components/chainConfig.ts +0 -400
  207. package/src/components/companion/CompanionHeader.tsx +0 -50
  208. package/src/components/companion/CompanionSceneHost.tsx +0 -5
  209. package/src/components/companion/VrmStage.tsx +0 -2
  210. package/src/components/companion/__tests__/walletUtils.test.ts +0 -742
  211. package/src/components/companion/index.ts +0 -18
  212. package/src/components/companion/walletUtils.ts +0 -290
  213. package/src/components/companion-shell-styles.test.ts +0 -142
  214. package/src/components/companion-shell-styles.ts +0 -270
  215. package/src/components/confirm-delete-control.tsx +0 -69
  216. package/src/components/conversations/ConversationListItem.tsx +0 -185
  217. package/src/components/conversations/conversation-utils.ts +0 -151
  218. package/src/components/format.ts +0 -131
  219. package/src/components/inventory/CopyableAddress.tsx +0 -41
  220. package/src/components/inventory/InventoryToolbar.tsx +0 -142
  221. package/src/components/inventory/NftGrid.tsx +0 -99
  222. package/src/components/inventory/TokenLogo.tsx +0 -71
  223. package/src/components/inventory/TokensTable.tsx +0 -216
  224. package/src/components/inventory/constants.ts +0 -170
  225. package/src/components/inventory/index.ts +0 -29
  226. package/src/components/inventory/media-url.test.ts +0 -38
  227. package/src/components/inventory/media-url.ts +0 -36
  228. package/src/components/inventory/useInventoryData.ts +0 -460
  229. package/src/components/knowledge-upload-image.ts +0 -215
  230. package/src/components/labels.ts +0 -46
  231. package/src/components/milady-bar/CloudCreditsChip.tsx +0 -61
  232. package/src/components/milady-bar/ProviderDropdown.tsx +0 -166
  233. package/src/components/milady-bar/WalletSummary.tsx +0 -61
  234. package/src/components/milady-bar/index.ts +0 -3
  235. package/src/components/onboarding/ActivateStep.tsx +0 -34
  236. package/src/components/onboarding/ConnectionStep.tsx +0 -1590
  237. package/src/components/onboarding/IdentityStep.tsx +0 -251
  238. package/src/components/onboarding/OnboardingPanel.tsx +0 -39
  239. package/src/components/onboarding/OnboardingStepNav.tsx +0 -41
  240. package/src/components/onboarding/PermissionsStep.tsx +0 -20
  241. package/src/components/onboarding/RpcStep.tsx +0 -402
  242. package/src/components/permissions/PermissionIcon.tsx +0 -25
  243. package/src/components/permissions/StreamingPermissions.tsx +0 -413
  244. package/src/components/plugins/showcase-data.ts +0 -481
  245. package/src/components/shared/ShellHeaderControls.tsx +0 -198
  246. package/src/components/shared-companion-scene-context.ts +0 -15
  247. package/src/components/skeletons.tsx +0 -88
  248. package/src/components/stream/ActivityFeed.tsx +0 -113
  249. package/src/components/stream/AvatarPip.tsx +0 -10
  250. package/src/components/stream/ChatContent.tsx +0 -126
  251. package/src/components/stream/ChatTicker.tsx +0 -55
  252. package/src/components/stream/IdleContent.tsx +0 -73
  253. package/src/components/stream/StatusBar.tsx +0 -463
  254. package/src/components/stream/StreamSettings.tsx +0 -506
  255. package/src/components/stream/StreamTerminal.tsx +0 -94
  256. package/src/components/stream/StreamVoiceConfig.tsx +0 -160
  257. package/src/components/stream/helpers.ts +0 -134
  258. package/src/components/stream/overlays/OverlayLayer.tsx +0 -75
  259. package/src/components/stream/overlays/built-in/ActionTickerWidget.tsx +0 -64
  260. package/src/components/stream/overlays/built-in/AlertPopupWidget.tsx +0 -87
  261. package/src/components/stream/overlays/built-in/BrandingWidget.tsx +0 -51
  262. package/src/components/stream/overlays/built-in/CustomHtmlWidget.tsx +0 -105
  263. package/src/components/stream/overlays/built-in/PeonGlassWidget.tsx +0 -265
  264. package/src/components/stream/overlays/built-in/PeonHudWidget.tsx +0 -247
  265. package/src/components/stream/overlays/built-in/PeonSakuraWidget.tsx +0 -278
  266. package/src/components/stream/overlays/built-in/ThoughtBubbleWidget.tsx +0 -77
  267. package/src/components/stream/overlays/built-in/ViewerCountWidget.tsx +0 -46
  268. package/src/components/stream/overlays/built-in/index.ts +0 -13
  269. package/src/components/stream/overlays/registry.ts +0 -22
  270. package/src/components/stream/overlays/types.ts +0 -90
  271. package/src/components/stream/overlays/useOverlayLayout.ts +0 -218
  272. package/src/components/trajectory-format.ts +0 -50
  273. package/src/components/ui-badges.tsx +0 -109
  274. package/src/components/ui-switch.tsx +0 -57
  275. package/src/components/vector-browser-three.ts +0 -29
  276. package/src/config/branding.ts +0 -67
  277. package/src/config/config-catalog.ts +0 -1092
  278. package/src/config/config-field.tsx +0 -1924
  279. package/src/config/config-renderer.tsx +0 -734
  280. package/src/config/index.ts +0 -12
  281. package/src/config/ui-renderer.tsx +0 -1751
  282. package/src/config/ui-spec.ts +0 -256
  283. package/src/events/index.ts +0 -96
  284. package/src/hooks/index.ts +0 -14
  285. package/src/hooks/useBugReport.tsx +0 -43
  286. package/src/hooks/useCanvasWindow.ts +0 -372
  287. package/src/hooks/useChatAvatarVoice.ts +0 -111
  288. package/src/hooks/useClickOutside.ts +0 -31
  289. package/src/hooks/useContextMenu.ts +0 -127
  290. package/src/hooks/useKeyboardShortcuts.ts +0 -86
  291. package/src/hooks/useLifoSync.ts +0 -143
  292. package/src/hooks/useMemoryMonitor.ts +0 -334
  293. package/src/hooks/useMiladyBar.ts +0 -594
  294. package/src/hooks/useRenderGuard.ts +0 -43
  295. package/src/hooks/useRetakeCapture.ts +0 -68
  296. package/src/hooks/useStreamPopoutNavigation.ts +0 -27
  297. package/src/hooks/useTimeout.ts +0 -37
  298. package/src/hooks/useVoiceChat.ts +0 -1442
  299. package/src/hooks/useWhatsAppPairing.ts +0 -123
  300. package/src/i18n/index.ts +0 -76
  301. package/src/i18n/locales/en.json +0 -1195
  302. package/src/i18n/locales/ko.json +0 -1195
  303. package/src/i18n/locales/pt.json +0 -1195
  304. package/src/i18n/locales/zh-CN.json +0 -1195
  305. package/src/i18n/messages.ts +0 -21
  306. package/src/index.ts +0 -6
  307. package/src/navigation/index.ts +0 -286
  308. package/src/navigation.test.ts +0 -189
  309. package/src/onboarding-config.test.ts +0 -104
  310. package/src/onboarding-config.ts +0 -122
  311. package/src/platform/browser-launch.test.ts +0 -94
  312. package/src/platform/browser-launch.ts +0 -149
  313. package/src/platform/index.ts +0 -58
  314. package/src/platform/init.ts +0 -238
  315. package/src/platform/lifo.ts +0 -225
  316. package/src/providers/index.ts +0 -108
  317. package/src/shell-params.test.ts +0 -48
  318. package/src/shell-params.ts +0 -36
  319. package/src/state/AppContext.tsx +0 -6415
  320. package/src/state/index.ts +0 -6
  321. package/src/state/internal.ts +0 -91
  322. package/src/state/onboarding-resume.test.ts +0 -135
  323. package/src/state/onboarding-resume.ts +0 -263
  324. package/src/state/parsers.test.ts +0 -124
  325. package/src/state/parsers.ts +0 -309
  326. package/src/state/persistence.ts +0 -379
  327. package/src/state/shell-routing.ts +0 -39
  328. package/src/state/types.ts +0 -724
  329. package/src/state/ui-preferences.ts +0 -3
  330. package/src/state/useApp.ts +0 -23
  331. package/src/state/vrm.ts +0 -108
  332. package/src/styles/anime.css +0 -6324
  333. package/src/styles/base.css +0 -213
  334. package/src/styles/onboarding-game.css +0 -976
  335. package/src/styles/styles.css +0 -2087
  336. package/src/styles/xterm.css +0 -241
  337. package/src/types/index.ts +0 -715
  338. package/src/types/react-test-renderer.d.ts +0 -45
  339. package/src/utils/asset-url.ts +0 -110
  340. package/src/utils/assistant-text.ts +0 -172
  341. package/src/utils/clipboard.ts +0 -41
  342. package/src/utils/desktop-dialogs.ts +0 -80
  343. package/src/utils/eliza-globals.ts +0 -44
  344. package/src/utils/index.ts +0 -7
  345. package/src/utils/number-parsing.ts +0 -125
  346. package/src/utils/openExternalUrl.ts +0 -20
  347. package/src/utils/spoken-text.ts +0 -65
  348. package/src/utils/streaming-text.ts +0 -120
  349. package/src/voice/index.ts +0 -1
  350. package/src/voice/types.ts +0 -197
  351. package/src/wallet-rpc.ts +0 -176
  352. package/test/app/AppContext.pty-sessions.test.tsx +0 -143
  353. package/test/app/MessageContent.test.tsx +0 -366
  354. package/test/app/PermissionsOnboarding.test.tsx +0 -358
  355. package/test/app/PermissionsSection.test.tsx +0 -575
  356. package/test/app/advanced-trajectory-fine-tuning.e2e.test.ts +0 -396
  357. package/test/app/agent-activity-box.test.tsx +0 -132
  358. package/test/app/agent-transfer-lock.test.ts +0 -279
  359. package/test/app/api-client-electrobun-fallback.test.ts +0 -139
  360. package/test/app/api-client-electron-fallback.test.ts +0 -139
  361. package/test/app/api-client-timeout.test.ts +0 -75
  362. package/test/app/api-client-ws.test.ts +0 -98
  363. package/test/app/api-client.ws-max-reconnect.test.ts +0 -139
  364. package/test/app/api-client.ws-reconnect.test.ts +0 -157
  365. package/test/app/app-context-autonomy-events.test.ts +0 -559
  366. package/test/app/apps-page-view.test.ts +0 -114
  367. package/test/app/apps-view.test.ts +0 -768
  368. package/test/app/autonomous-workflows.e2e.test.ts +0 -765
  369. package/test/app/autonomy-events.test.ts +0 -150
  370. package/test/app/avatar-selector.test.tsx +0 -52
  371. package/test/app/bsc-trade-panel.test.tsx +0 -134
  372. package/test/app/bug-report-modal.test.tsx +0 -353
  373. package/test/app/character-action-bar-visibility.test.ts +0 -70
  374. package/test/app/character-customization.e2e.test.ts +0 -1384
  375. package/test/app/character-save-journey.test.ts +0 -1245
  376. package/test/app/chat-advanced-features.e2e.test.ts +0 -706
  377. package/test/app/chat-composer.test.tsx +0 -181
  378. package/test/app/chat-journey.test.ts +0 -1075
  379. package/test/app/chat-language-header.test.ts +0 -64
  380. package/test/app/chat-message.test.tsx +0 -222
  381. package/test/app/chat-modal-view.test.tsx +0 -191
  382. package/test/app/chat-routine-filter.test.ts +0 -96
  383. package/test/app/chat-send-lock.test.ts +0 -1465
  384. package/test/app/chat-stream-api-client.test.tsx +0 -390
  385. package/test/app/chat-view-game-modal.test.tsx +0 -661
  386. package/test/app/chat-view.test.tsx +0 -877
  387. package/test/app/cloud-api.e2e.test.ts +0 -258
  388. package/test/app/cloud-login-flow.e2e.test.ts +0 -494
  389. package/test/app/cloud-login-lock.test.ts +0 -416
  390. package/test/app/command-palette.test.tsx +0 -184
  391. package/test/app/command-registry.test.ts +0 -75
  392. package/test/app/companion-greeting-wave.test.tsx +0 -431
  393. package/test/app/companion-scene-host.test.tsx +0 -85
  394. package/test/app/companion-stale-conversation.test.tsx +0 -447
  395. package/test/app/companion-view.test.tsx +0 -690
  396. package/test/app/confirm-delete-control.test.ts +0 -79
  397. package/test/app/confirm-modal.test.tsx +0 -219
  398. package/test/app/connection-mode-persistence.test.ts +0 -411
  399. package/test/app/connectors-ui.e2e.test.ts +0 -508
  400. package/test/app/conversations-sidebar-game-modal.test.tsx +0 -265
  401. package/test/app/conversations-sidebar.test.tsx +0 -185
  402. package/test/app/custom-actions-smoke.test.ts +0 -387
  403. package/test/app/custom-avatar-api-client.test.ts +0 -207
  404. package/test/app/desktop-utils.test.ts +0 -145
  405. package/test/app/electrobun-rpc-bridge.test.ts +0 -83
  406. package/test/app/events.test.ts +0 -88
  407. package/test/app/export-import-flows.e2e.test.ts +0 -700
  408. package/test/app/fine-tuning-view.test.ts +0 -471
  409. package/test/app/game-view-auth-session.test.tsx +0 -187
  410. package/test/app/game-view.test.ts +0 -444
  411. package/test/app/global-emote-overlay.test.tsx +0 -106
  412. package/test/app/header-status.test.tsx +0 -149
  413. package/test/app/i18n.test.ts +0 -152
  414. package/test/app/inventory-bsc-view.test.ts +0 -940
  415. package/test/app/knowledge-ui.e2e.test.ts +0 -762
  416. package/test/app/knowledge-upload-helpers.test.ts +0 -124
  417. package/test/app/lifecycle-lock.test.ts +0 -267
  418. package/test/app/lifo-popout-utils.test.ts +0 -208
  419. package/test/app/lifo-safe-endpoint.test.ts +0 -34
  420. package/test/app/loading-screen.test.tsx +0 -45
  421. package/test/app/memory-monitor.test.ts +0 -331
  422. package/test/app/milady-bar-regression.test.tsx +0 -519
  423. package/test/app/milady-bar-settings.test.tsx +0 -1056
  424. package/test/app/milady-bar.test.tsx +0 -583
  425. package/test/app/navigation.test.tsx +0 -22
  426. package/test/app/onboarding-e2e-journey.test.ts +0 -1391
  427. package/test/app/onboarding-finish-lock.test.ts +0 -676
  428. package/test/app/onboarding-language.test.tsx +0 -160
  429. package/test/app/onboarding-steps.test.tsx +0 -376
  430. package/test/app/open-external-url.test.ts +0 -65
  431. package/test/app/pages-navigation-smoke.e2e.test.ts +0 -646
  432. package/test/app/pairing-lock.test.ts +0 -260
  433. package/test/app/pairing-view.test.tsx +0 -74
  434. package/test/app/permissions-section.test.ts +0 -432
  435. package/test/app/plugin-bridge.test.ts +0 -109
  436. package/test/app/plugins-ui.e2e.test.ts +0 -605
  437. package/test/app/plugins-view-game-modal.test.tsx +0 -686
  438. package/test/app/plugins-view-toggle-restart.test.ts +0 -129
  439. package/test/app/provider-dropdown-default.test.tsx +0 -300
  440. package/test/app/restart-banner.test.tsx +0 -205
  441. package/test/app/retake-capture.test.ts +0 -84
  442. package/test/app/sandbox-api-client.test.ts +0 -108
  443. package/test/app/save-command-modal.test.tsx +0 -109
  444. package/test/app/secrets-view.test.tsx +0 -92
  445. package/test/app/settings-control-styles.test.tsx +0 -142
  446. package/test/app/settings-reset.e2e.test.ts +0 -726
  447. package/test/app/settings-sections.e2e.test.ts +0 -614
  448. package/test/app/shared-format.test.ts +0 -44
  449. package/test/app/shared-switch.test.ts +0 -69
  450. package/test/app/shell-mode-switching.e2e.test.ts +0 -841
  451. package/test/app/shell-mode-tab-memory.test.tsx +0 -58
  452. package/test/app/shell-overlays.test.tsx +0 -50
  453. package/test/app/shortcuts-overlay.test.tsx +0 -111
  454. package/test/app/sse-interruption.test.ts +0 -122
  455. package/test/app/startup-asset-missing.e2e.test.ts +0 -126
  456. package/test/app/startup-backend-missing.e2e.test.ts +0 -126
  457. package/test/app/startup-chat.e2e.test.ts +0 -323
  458. package/test/app/startup-conversation-restore.test.tsx +0 -381
  459. package/test/app/startup-failure-view.test.tsx +0 -103
  460. package/test/app/startup-onboarding.e2e.test.ts +0 -712
  461. package/test/app/startup-timeout.test.tsx +0 -80
  462. package/test/app/startup-token-401.e2e.test.ts +0 -103
  463. package/test/app/stream-helpers.test.ts +0 -46
  464. package/test/app/stream-popout-navigation.test.tsx +0 -41
  465. package/test/app/stream-status-bar.test.tsx +0 -89
  466. package/test/app/theme-toggle.test.tsx +0 -40
  467. package/test/app/training-api-client.test.ts +0 -128
  468. package/test/app/trajectories-view.test.tsx +0 -220
  469. package/test/app/triggers-api-client.test.ts +0 -77
  470. package/test/app/triggers-navigation.test.ts +0 -113
  471. package/test/app/triggers-view.e2e.test.ts +0 -675
  472. package/test/app/update-channel-lock.test.ts +0 -259
  473. package/test/app/vector-browser.async-cleanup.test.tsx +0 -367
  474. package/test/app/vector-browser.e2e.test.ts +0 -653
  475. package/test/app/vrm-stage.test.tsx +0 -351
  476. package/test/app/vrm-viewer.test.tsx +0 -298
  477. package/test/app/wallet-api-save-lock.test.ts +0 -299
  478. package/test/app/wallet-hooks.test.ts +0 -405
  479. package/test/app/wallet-ui-flows.e2e.test.ts +0 -556
  480. package/test/avatar/asset-url.test.ts +0 -90
  481. package/test/avatar/avatar-selector.test.ts +0 -173
  482. package/test/avatar/mixamo-vrm-rig-map.test.ts +0 -111
  483. package/test/avatar/voice-chat-streaming-text.test.ts +0 -96
  484. package/test/avatar/voice-chat.test.ts +0 -391
  485. package/test/browser-extension/README.md +0 -138
  486. package/test/browser-extension/test-harness.ts +0 -499
  487. package/test/capacitor-plugins.e2e.test.ts +0 -168
  488. package/test/test-types.ts +0 -5
  489. package/test/ui/command-palette-commands.test.ts +0 -57
  490. package/test/ui/ui-renderer.test.ts +0 -39
  491. package/test/utils/assistant-text.test.ts +0 -68
  492. package/test/utils/eliza-globals.test.ts +0 -59
  493. package/test/utils/package-exports.test.ts +0 -70
  494. package/test/utils/streaming-text.test.ts +0 -89
  495. package/tsconfig.build.json +0 -19
  496. package/tsconfig.json +0 -20
  497. package/tsconfig.typecheck.json +0 -12
  498. /package/{dist/App.d.ts → App.d.ts} +0 -0
  499. /package/{dist/actions → actions}/character.d.ts +0 -0
  500. /package/{dist/actions → actions}/character.d.ts.map +0 -0
  501. /package/{dist/actions → actions}/character.js +0 -0
  502. /package/{dist/actions → actions}/chat-helpers.d.ts +0 -0
  503. /package/{dist/actions → actions}/chat-helpers.d.ts.map +0 -0
  504. /package/{dist/actions → actions}/chat-helpers.js +0 -0
  505. /package/{dist/actions → actions}/cloud.d.ts +0 -0
  506. /package/{dist/actions → actions}/cloud.d.ts.map +0 -0
  507. /package/{dist/actions → actions}/cloud.js +0 -0
  508. /package/{dist/actions → actions}/index.d.ts +0 -0
  509. /package/{dist/actions → actions}/index.d.ts.map +0 -0
  510. /package/{dist/actions → actions}/index.js +0 -0
  511. /package/{dist/actions → actions}/lifecycle.d.ts +0 -0
  512. /package/{dist/actions → actions}/lifecycle.d.ts.map +0 -0
  513. /package/{dist/actions → actions}/lifecycle.js +0 -0
  514. /package/{dist/actions → actions}/onboarding.d.ts +0 -0
  515. /package/{dist/actions → actions}/onboarding.d.ts.map +0 -0
  516. /package/{dist/actions → actions}/onboarding.js +0 -0
  517. /package/{dist/actions → actions}/triggers.d.ts +0 -0
  518. /package/{dist/actions → actions}/triggers.d.ts.map +0 -0
  519. /package/{dist/actions → actions}/triggers.js +0 -0
  520. /package/{dist/api → api}/client.d.ts +0 -0
  521. /package/{dist/api → api}/client.d.ts.map +0 -0
  522. /package/{dist/api → api}/client.js +0 -0
  523. /package/{dist/api → api}/index.d.ts +0 -0
  524. /package/{dist/api → api}/index.d.ts.map +0 -0
  525. /package/{dist/api → api}/index.js +0 -0
  526. /package/{dist/autonomy → autonomy}/index.d.ts +0 -0
  527. /package/{dist/autonomy → autonomy}/index.d.ts.map +0 -0
  528. /package/{dist/autonomy → autonomy}/index.js +0 -0
  529. /package/{dist/bridge → bridge}/capacitor-bridge.d.ts +0 -0
  530. /package/{dist/bridge → bridge}/capacitor-bridge.d.ts.map +0 -0
  531. /package/{dist/bridge → bridge}/capacitor-bridge.js +0 -0
  532. /package/{dist/bridge → bridge}/electrobun-rpc.d.ts +0 -0
  533. /package/{dist/bridge → bridge}/electrobun-rpc.d.ts.map +0 -0
  534. /package/{dist/bridge → bridge}/electrobun-rpc.js +0 -0
  535. /package/{dist/bridge → bridge}/electrobun-runtime.d.ts +0 -0
  536. /package/{dist/bridge → bridge}/electrobun-runtime.d.ts.map +0 -0
  537. /package/{dist/bridge → bridge}/electrobun-runtime.js +0 -0
  538. /package/{dist/bridge → bridge}/index.d.ts +0 -0
  539. /package/{dist/bridge → bridge}/index.d.ts.map +0 -0
  540. /package/{dist/bridge → bridge}/index.js +0 -0
  541. /package/{dist/bridge → bridge}/native-plugins.d.ts +0 -0
  542. /package/{dist/bridge → bridge}/native-plugins.d.ts.map +0 -0
  543. /package/{dist/bridge → bridge}/native-plugins.js +0 -0
  544. /package/{dist/bridge → bridge}/plugin-bridge.d.ts +0 -0
  545. /package/{dist/bridge → bridge}/plugin-bridge.d.ts.map +0 -0
  546. /package/{dist/bridge → bridge}/plugin-bridge.js +0 -0
  547. /package/{dist/bridge → bridge}/storage-bridge.d.ts +0 -0
  548. /package/{dist/bridge → bridge}/storage-bridge.d.ts.map +0 -0
  549. /package/{dist/bridge → bridge}/storage-bridge.js +0 -0
  550. /package/{dist/chat → chat}/index.d.ts +0 -0
  551. /package/{dist/chat → chat}/index.d.ts.map +0 -0
  552. /package/{dist/chat → chat}/index.js +0 -0
  553. /package/{dist/coding → coding}/index.d.ts +0 -0
  554. /package/{dist/coding → coding}/index.d.ts.map +0 -0
  555. /package/{dist/coding → coding}/index.js +0 -0
  556. /package/{dist/components → components}/AdvancedPageView.d.ts +0 -0
  557. /package/{dist/components → components}/AgentActivityBox.d.ts +0 -0
  558. /package/{dist/components → components}/AgentActivityBox.d.ts.map +0 -0
  559. /package/{dist/components → components}/AgentActivityBox.js +0 -0
  560. /package/{dist/components → components}/ApiKeyConfig.d.ts +0 -0
  561. /package/{dist/components → components}/ApiKeyConfig.d.ts.map +0 -0
  562. /package/{dist/components → components}/ApiKeyConfig.js +0 -0
  563. /package/{dist/components → components}/AppsPageView.d.ts +0 -0
  564. /package/{dist/components → components}/AppsPageView.d.ts.map +0 -0
  565. /package/{dist/components → components}/AppsPageView.js +0 -0
  566. /package/{dist/components → components}/AppsView.d.ts +0 -0
  567. /package/{dist/components → components}/AppsView.d.ts.map +0 -0
  568. /package/{dist/components → components}/AppsView.js +0 -0
  569. /package/{dist/components → components}/AvatarLoader.d.ts +0 -0
  570. /package/{dist/components → components}/AvatarLoader.d.ts.map +0 -0
  571. /package/{dist/components → components}/AvatarLoader.js +0 -0
  572. /package/{dist/components → components}/AvatarSelector.d.ts +0 -0
  573. /package/{dist/components → components}/AvatarSelector.d.ts.map +0 -0
  574. /package/{dist/components → components}/AvatarSelector.js +0 -0
  575. /package/{dist/components → components}/BscTradePanel.d.ts +0 -0
  576. /package/{dist/components → components}/BscTradePanel.d.ts.map +0 -0
  577. /package/{dist/components → components}/BscTradePanel.js +0 -0
  578. /package/{dist/components → components}/BugReportModal.d.ts +0 -0
  579. /package/{dist/components → components}/BugReportModal.d.ts.map +0 -0
  580. /package/{dist/components → components}/BugReportModal.js +0 -0
  581. /package/{dist/components → components}/CharacterRoster.d.ts +0 -0
  582. /package/{dist/components → components}/CharacterRoster.d.ts.map +0 -0
  583. /package/{dist/components → components}/CharacterRoster.js +0 -0
  584. /package/{dist/components → components}/CharacterView.d.ts +0 -0
  585. /package/{dist/components → components}/ChatAvatar.d.ts +0 -0
  586. /package/{dist/components → components}/ChatAvatar.d.ts.map +0 -0
  587. /package/{dist/components → components}/ChatAvatar.js +0 -0
  588. /package/{dist/components → components}/ChatComposer.d.ts +0 -0
  589. /package/{dist/components → components}/ChatMessage.d.ts +0 -0
  590. /package/{dist/components → components}/ChatMessage.d.ts.map +0 -0
  591. /package/{dist/components → components}/ChatMessage.js +0 -0
  592. /package/{dist/components → components}/ChatModalView.d.ts +0 -0
  593. /package/{dist/components → components}/ChatModalView.d.ts.map +0 -0
  594. /package/{dist/components → components}/ChatModalView.js +0 -0
  595. /package/{dist/components → components}/ChatView.d.ts +0 -0
  596. /package/{dist/components → components}/CloudOnboarding.d.ts +0 -0
  597. /package/{dist/components → components}/CloudOnboarding.d.ts.map +0 -0
  598. /package/{dist/components → components}/CloudOnboarding.js +0 -0
  599. /package/{dist/components → components}/CloudSourceControls.d.ts +0 -0
  600. /package/{dist/components → components}/CloudSourceControls.d.ts.map +0 -0
  601. /package/{dist/components → components}/CloudSourceControls.js +0 -0
  602. /package/{dist/components → components}/CodingAgentSettingsSection.d.ts +0 -0
  603. /package/{dist/components → components}/CodingAgentSettingsSection.d.ts.map +0 -0
  604. /package/{dist/components → components}/CodingAgentSettingsSection.js +0 -0
  605. /package/{dist/components → components}/CommandPalette.d.ts +0 -0
  606. /package/{dist/components → components}/CommandPalette.d.ts.map +0 -0
  607. /package/{dist/components → components}/CommandPalette.js +0 -0
  608. /package/{dist/components → components}/CompanionSceneHost.d.ts +0 -0
  609. /package/{dist/components → components}/CompanionSceneHost.d.ts.map +0 -0
  610. /package/{dist/components → components}/CompanionSceneHost.js +0 -0
  611. /package/{dist/components → components}/CompanionShell.d.ts +0 -0
  612. /package/{dist/components → components}/CompanionShell.d.ts.map +0 -0
  613. /package/{dist/components → components}/CompanionShell.js +0 -0
  614. /package/{dist/components → components}/CompanionView.d.ts +0 -0
  615. /package/{dist/components → components}/CompanionView.d.ts.map +0 -0
  616. /package/{dist/components → components}/ConfigPageView.d.ts +0 -0
  617. /package/{dist/components → components}/ConfigPageView.d.ts.map +0 -0
  618. /package/{dist/components → components}/ConfigSaveFooter.d.ts +0 -0
  619. /package/{dist/components → components}/ConfigSaveFooter.d.ts.map +0 -0
  620. /package/{dist/components → components}/ConfigSaveFooter.js +0 -0
  621. /package/{dist/components → components}/ConfirmModal.d.ts +0 -0
  622. /package/{dist/components → components}/ConfirmModal.d.ts.map +0 -0
  623. /package/{dist/components → components}/ConfirmModal.js +0 -0
  624. /package/{dist/components → components}/ConnectionFailedBanner.d.ts +0 -0
  625. /package/{dist/components → components}/ConnectionFailedBanner.d.ts.map +0 -0
  626. /package/{dist/components → components}/ConnectionFailedBanner.js +0 -0
  627. /package/{dist/components → components}/ConnectorsPageView.d.ts +0 -0
  628. /package/{dist/components → components}/ConnectorsPageView.d.ts.map +0 -0
  629. /package/{dist/components → components}/ConnectorsPageView.js +0 -0
  630. /package/{dist/components → components}/ConversationsSidebar.d.ts +0 -0
  631. /package/{dist/components → components}/ConversationsSidebar.d.ts.map +0 -0
  632. /package/{dist/components → components}/ConversationsSidebar.js +0 -0
  633. /package/{dist/components → components}/CustomActionEditor.d.ts +0 -0
  634. /package/{dist/components → components}/CustomActionEditor.d.ts.map +0 -0
  635. /package/{dist/components → components}/CustomActionEditor.js +0 -0
  636. /package/{dist/components → components}/CustomActionsPanel.d.ts +0 -0
  637. /package/{dist/components → components}/CustomActionsPanel.d.ts.map +0 -0
  638. /package/{dist/components → components}/CustomActionsPanel.js +0 -0
  639. /package/{dist/components → components}/CustomActionsView.d.ts +0 -0
  640. /package/{dist/components → components}/CustomActionsView.d.ts.map +0 -0
  641. /package/{dist/components → components}/CustomActionsView.js +0 -0
  642. /package/{dist/components → components}/DatabasePageView.d.ts +0 -0
  643. /package/{dist/components → components}/DatabasePageView.d.ts.map +0 -0
  644. /package/{dist/components → components}/DatabasePageView.js +0 -0
  645. /package/{dist/components → components}/DatabaseView.d.ts +0 -0
  646. /package/{dist/components → components}/DatabaseView.d.ts.map +0 -0
  647. /package/{dist/components → components}/DatabaseView.js +0 -0
  648. /package/{dist/components → components}/ElizaCloudDashboard.d.ts +0 -0
  649. /package/{dist/components → components}/ElizaCloudDashboard.d.ts.map +0 -0
  650. /package/{dist/components → components}/EmotePicker.d.ts +0 -0
  651. /package/{dist/components → components}/EmotePicker.d.ts.map +0 -0
  652. /package/{dist/components → components}/EmotePicker.js +0 -0
  653. /package/{dist/components → components}/ErrorBoundary.d.ts +0 -0
  654. /package/{dist/components → components}/ErrorBoundary.d.ts.map +0 -0
  655. /package/{dist/components → components}/ErrorBoundary.js +0 -0
  656. /package/{dist/components → components}/FineTuningView.d.ts +0 -0
  657. /package/{dist/components → components}/FineTuningView.d.ts.map +0 -0
  658. /package/{dist/components → components}/FineTuningView.js +0 -0
  659. /package/{dist/components → components}/FlaminaGuide.d.ts +0 -0
  660. /package/{dist/components → components}/FlaminaGuide.d.ts.map +0 -0
  661. /package/{dist/components → components}/GameView.d.ts +0 -0
  662. /package/{dist/components → components}/GameView.d.ts.map +0 -0
  663. /package/{dist/components → components}/GameView.js +0 -0
  664. /package/{dist/components → components}/GameViewOverlay.d.ts +0 -0
  665. /package/{dist/components → components}/GameViewOverlay.d.ts.map +0 -0
  666. /package/{dist/components → components}/GameViewOverlay.js +0 -0
  667. /package/{dist/components → components}/GlobalEmoteOverlay.d.ts +0 -0
  668. /package/{dist/components → components}/GlobalEmoteOverlay.d.ts.map +0 -0
  669. /package/{dist/components → components}/GlobalEmoteOverlay.js +0 -0
  670. /package/{dist/components → components}/Header.d.ts +0 -0
  671. /package/{dist/components → components}/Header.d.ts.map +0 -0
  672. /package/{dist/components → components}/Header.js +0 -0
  673. /package/{dist/components → components}/HeartbeatsView.d.ts +0 -0
  674. /package/{dist/components → components}/HeartbeatsView.d.ts.map +0 -0
  675. /package/{dist/components → components}/HeartbeatsView.js +0 -0
  676. /package/{dist/components → components}/InventoryView.d.ts +0 -0
  677. /package/{dist/components → components}/InventoryView.d.ts.map +0 -0
  678. /package/{dist/components → components}/InventoryView.js +0 -0
  679. /package/{dist/components → components}/KnowledgeView.d.ts +0 -0
  680. /package/{dist/components → components}/KnowledgeView.d.ts.map +0 -0
  681. /package/{dist/components → components}/KnowledgeView.js +0 -0
  682. /package/{dist/components → components}/LanguageDropdown.d.ts +0 -0
  683. /package/{dist/components → components}/LanguageDropdown.d.ts.map +0 -0
  684. /package/{dist/components → components}/LanguageDropdown.js +0 -0
  685. /package/{dist/components → components}/LifoMonitorPanel.d.ts +0 -0
  686. /package/{dist/components → components}/LifoMonitorPanel.d.ts.map +0 -0
  687. /package/{dist/components → components}/LifoMonitorPanel.js +0 -0
  688. /package/{dist/components → components}/LifoSandboxView.d.ts +0 -0
  689. /package/{dist/components → components}/LifoSandboxView.d.ts.map +0 -0
  690. /package/{dist/components → components}/LifoSandboxView.js +0 -0
  691. /package/{dist/components → components}/LoadingScreen.d.ts +0 -0
  692. /package/{dist/components → components}/LoadingScreen.d.ts.map +0 -0
  693. /package/{dist/components → components}/LoadingScreen.js +0 -0
  694. /package/{dist/components → components}/LogsPageView.d.ts +0 -0
  695. /package/{dist/components → components}/LogsPageView.d.ts.map +0 -0
  696. /package/{dist/components → components}/LogsPageView.js +0 -0
  697. /package/{dist/components → components}/LogsView.d.ts +0 -0
  698. /package/{dist/components → components}/LogsView.d.ts.map +0 -0
  699. /package/{dist/components → components}/LogsView.js +0 -0
  700. /package/{dist/components → components}/MediaGalleryView.d.ts +0 -0
  701. /package/{dist/components → components}/MediaGalleryView.d.ts.map +0 -0
  702. /package/{dist/components → components}/MediaGalleryView.js +0 -0
  703. /package/{dist/components → components}/MediaSettingsSection.d.ts +0 -0
  704. /package/{dist/components → components}/MediaSettingsSection.d.ts.map +0 -0
  705. /package/{dist/components → components}/MediaSettingsSection.js +0 -0
  706. /package/{dist/components → components}/MessageContent.d.ts +0 -0
  707. /package/{dist/components → components}/MessageContent.d.ts.map +0 -0
  708. /package/{dist/components → components}/MessageContent.js +0 -0
  709. /package/{dist/components → components}/OnboardingWizard.d.ts +0 -0
  710. /package/{dist/components → components}/PairingView.d.ts +0 -0
  711. /package/{dist/components → components}/PairingView.d.ts.map +0 -0
  712. /package/{dist/components → components}/PairingView.js +0 -0
  713. /package/{dist/components → components}/PermissionsSection.d.ts +0 -0
  714. /package/{dist/components → components}/PermissionsSection.d.ts.map +0 -0
  715. /package/{dist/components → components}/PermissionsSection.js +0 -0
  716. /package/{dist/components → components}/PluginsPageView.d.ts +0 -0
  717. /package/{dist/components → components}/PluginsPageView.d.ts.map +0 -0
  718. /package/{dist/components → components}/PluginsPageView.js +0 -0
  719. /package/{dist/components → components}/PluginsView.d.ts +0 -0
  720. /package/{dist/components → components}/ProviderSwitcher.d.ts +0 -0
  721. /package/{dist/components → components}/ProviderSwitcher.d.ts.map +0 -0
  722. /package/{dist/components → components}/ProviderSwitcher.js +0 -0
  723. /package/{dist/components → components}/RestartBanner.d.ts +0 -0
  724. /package/{dist/components → components}/RestartBanner.d.ts.map +0 -0
  725. /package/{dist/components → components}/RestartBanner.js +0 -0
  726. /package/{dist/components → components}/RuntimeView.d.ts +0 -0
  727. /package/{dist/components → components}/RuntimeView.d.ts.map +0 -0
  728. /package/{dist/components → components}/RuntimeView.js +0 -0
  729. /package/{dist/components → components}/SaveCommandModal.d.ts +0 -0
  730. /package/{dist/components → components}/SaveCommandModal.d.ts.map +0 -0
  731. /package/{dist/components → components}/SaveCommandModal.js +0 -0
  732. /package/{dist/components → components}/SecretsView.d.ts +0 -0
  733. /package/{dist/components → components}/SecretsView.d.ts.map +0 -0
  734. /package/{dist/components → components}/SecretsView.js +0 -0
  735. /package/{dist/components → components}/SettingsView.d.ts +0 -0
  736. /package/{dist/components → components}/SettingsView.d.ts.map +0 -0
  737. /package/{dist/components → components}/SettingsView.js +0 -0
  738. /package/{dist/components → components}/ShellOverlays.d.ts +0 -0
  739. /package/{dist/components → components}/ShellOverlays.d.ts.map +0 -0
  740. /package/{dist/components → components}/ShellOverlays.js +0 -0
  741. /package/{dist/components → components}/ShortcutsOverlay.d.ts +0 -0
  742. /package/{dist/components → components}/ShortcutsOverlay.d.ts.map +0 -0
  743. /package/{dist/components → components}/ShortcutsOverlay.js +0 -0
  744. /package/{dist/components → components}/SkillsView.d.ts +0 -0
  745. /package/{dist/components → components}/SkillsView.d.ts.map +0 -0
  746. /package/{dist/components → components}/SkillsView.js +0 -0
  747. /package/{dist/components → components}/StartupFailureView.d.ts +0 -0
  748. /package/{dist/components → components}/StartupFailureView.d.ts.map +0 -0
  749. /package/{dist/components → components}/StartupFailureView.js +0 -0
  750. /package/{dist/components → components}/StreamView.d.ts +0 -0
  751. /package/{dist/components → components}/StreamView.d.ts.map +0 -0
  752. /package/{dist/components → components}/StreamView.js +0 -0
  753. /package/{dist/components → components}/StripeEmbeddedCheckout.d.ts +0 -0
  754. /package/{dist/components → components}/StripeEmbeddedCheckout.d.ts.map +0 -0
  755. /package/{dist/components → components}/StripeEmbeddedCheckout.js +0 -0
  756. /package/{dist/components → components}/SubscriptionStatus.d.ts +0 -0
  757. /package/{dist/components → components}/SubscriptionStatus.d.ts.map +0 -0
  758. /package/{dist/components → components}/SubscriptionStatus.js +0 -0
  759. /package/{dist/components → components}/SystemWarningBanner.d.ts +0 -0
  760. /package/{dist/components → components}/SystemWarningBanner.d.ts.map +0 -0
  761. /package/{dist/components → components}/SystemWarningBanner.js +0 -0
  762. /package/{dist/components → components}/ThemeToggle.d.ts +0 -0
  763. /package/{dist/components → components}/ThemeToggle.d.ts.map +0 -0
  764. /package/{dist/components → components}/ThemeToggle.js +0 -0
  765. /package/{dist/components → components}/TrajectoriesView.d.ts +0 -0
  766. /package/{dist/components → components}/TrajectoriesView.d.ts.map +0 -0
  767. /package/{dist/components → components}/TrajectoriesView.js +0 -0
  768. /package/{dist/components → components}/TrajectoryDetailView.d.ts +0 -0
  769. /package/{dist/components → components}/TrajectoryDetailView.d.ts.map +0 -0
  770. /package/{dist/components → components}/TrajectoryDetailView.js +0 -0
  771. /package/{dist/components → components}/TriggersView.d.ts +0 -0
  772. /package/{dist/components → components}/TriggersView.d.ts.map +0 -0
  773. /package/{dist/components → components}/TriggersView.js +0 -0
  774. /package/{dist/components → components}/VectorBrowserView.d.ts +0 -0
  775. /package/{dist/components → components}/VectorBrowserView.d.ts.map +0 -0
  776. /package/{dist/components → components}/VectorBrowserView.js +0 -0
  777. /package/{dist/components → components}/VoiceConfigView.d.ts +0 -0
  778. /package/{dist/components → components}/VoiceConfigView.d.ts.map +0 -0
  779. /package/{dist/components → components}/VoiceConfigView.js +0 -0
  780. /package/{dist/components → components}/VrmStage.d.ts +0 -0
  781. /package/{dist/components → components}/VrmStage.d.ts.map +0 -0
  782. /package/{dist/components → components}/VrmStage.js +0 -0
  783. /package/{dist/components → components}/WhatsAppQrOverlay.d.ts +0 -0
  784. /package/{dist/components → components}/WhatsAppQrOverlay.d.ts.map +0 -0
  785. /package/{dist/components → components}/WhatsAppQrOverlay.js +0 -0
  786. /package/{dist/components → components}/apps/AppDetailPane.d.ts +0 -0
  787. /package/{dist/components → components}/apps/AppDetailPane.d.ts.map +0 -0
  788. /package/{dist/components → components}/apps/AppDetailPane.js +0 -0
  789. /package/{dist/components → components}/apps/AppsCatalogGrid.d.ts +0 -0
  790. /package/{dist/components → components}/apps/AppsCatalogGrid.d.ts.map +0 -0
  791. /package/{dist/components → components}/apps/AppsCatalogGrid.js +0 -0
  792. /package/{dist/components → components}/apps/extensions/registry.d.ts +0 -0
  793. /package/{dist/components → components}/apps/extensions/registry.d.ts.map +0 -0
  794. /package/{dist/components → components}/apps/extensions/registry.js +0 -0
  795. /package/{dist/components → components}/apps/extensions/types.d.ts +0 -0
  796. /package/{dist/components → components}/apps/extensions/types.d.ts.map +0 -0
  797. /package/{dist/components → components}/apps/extensions/types.js +0 -0
  798. /package/{dist/components → components}/apps/helpers.d.ts +0 -0
  799. /package/{dist/components → components}/apps/helpers.d.ts.map +0 -0
  800. /package/{dist/components → components}/apps/helpers.js +0 -0
  801. /package/{dist/components → components}/avatar/VrmAnimationLoader.d.ts +0 -0
  802. /package/{dist/components → components}/avatar/VrmAnimationLoader.d.ts.map +0 -0
  803. /package/{dist/components → components}/avatar/VrmAnimationLoader.js +0 -0
  804. /package/{dist/components → components}/avatar/VrmBlinkController.d.ts +0 -0
  805. /package/{dist/components → components}/avatar/VrmBlinkController.d.ts.map +0 -0
  806. /package/{dist/components → components}/avatar/VrmBlinkController.js +0 -0
  807. /package/{dist/components → components}/avatar/VrmCameraManager.d.ts +0 -0
  808. /package/{dist/components → components}/avatar/VrmCameraManager.d.ts.map +0 -0
  809. /package/{dist/components → components}/avatar/VrmCameraManager.js +0 -0
  810. /package/{dist/components → components}/avatar/VrmFootShadow.d.ts +0 -0
  811. /package/{dist/components → components}/avatar/VrmFootShadow.d.ts.map +0 -0
  812. /package/{dist/components → components}/avatar/VrmFootShadow.js +0 -0
  813. /package/{dist/components → components}/avatar/mixamoVRMRigMap.d.ts +0 -0
  814. /package/{dist/components → components}/avatar/mixamoVRMRigMap.d.ts.map +0 -0
  815. /package/{dist/components → components}/avatar/mixamoVRMRigMap.js +0 -0
  816. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.d.ts +0 -0
  817. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.d.ts.map +0 -0
  818. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.js +0 -0
  819. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.d.ts +0 -0
  820. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.d.ts.map +0 -0
  821. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.js +0 -0
  822. /package/{dist/components → components}/chainConfig.d.ts +0 -0
  823. /package/{dist/components → components}/chainConfig.d.ts.map +0 -0
  824. /package/{dist/components → components}/chainConfig.js +0 -0
  825. /package/{dist/components → components}/companion/CompanionHeader.d.ts +0 -0
  826. /package/{dist/components → components}/companion/CompanionHeader.d.ts.map +0 -0
  827. /package/{dist/components → components}/companion/CompanionHeader.js +0 -0
  828. /package/{dist/components → components}/companion/CompanionSceneHost.d.ts +0 -0
  829. /package/{dist/components → components}/companion/CompanionSceneHost.d.ts.map +0 -0
  830. /package/{dist/components → components}/companion/CompanionSceneHost.js +0 -0
  831. /package/{dist/components → components}/companion/VrmStage.d.ts +0 -0
  832. /package/{dist/components → components}/companion/VrmStage.d.ts.map +0 -0
  833. /package/{dist/components → components}/companion/VrmStage.js +0 -0
  834. /package/{dist/components → components}/companion/index.d.ts +0 -0
  835. /package/{dist/components → components}/companion/index.d.ts.map +0 -0
  836. /package/{dist/components → components}/companion/index.js +0 -0
  837. /package/{dist/components → components}/companion/walletUtils.d.ts +0 -0
  838. /package/{dist/components → components}/companion/walletUtils.d.ts.map +0 -0
  839. /package/{dist/components → components}/companion/walletUtils.js +0 -0
  840. /package/{dist/components → components}/companion-shell-styles.d.ts +0 -0
  841. /package/{dist/components → components}/companion-shell-styles.d.ts.map +0 -0
  842. /package/{dist/components → components}/companion-shell-styles.js +0 -0
  843. /package/{dist/components → components}/confirm-delete-control.d.ts +0 -0
  844. /package/{dist/components → components}/confirm-delete-control.d.ts.map +0 -0
  845. /package/{dist/components → components}/confirm-delete-control.js +0 -0
  846. /package/{dist/components → components}/conversations/ConversationListItem.d.ts +0 -0
  847. /package/{dist/components → components}/conversations/ConversationListItem.d.ts.map +0 -0
  848. /package/{dist/components → components}/conversations/ConversationListItem.js +0 -0
  849. /package/{dist/components → components}/conversations/conversation-utils.d.ts +0 -0
  850. /package/{dist/components → components}/conversations/conversation-utils.d.ts.map +0 -0
  851. /package/{dist/components → components}/conversations/conversation-utils.js +0 -0
  852. /package/{dist/components → components}/format.d.ts +0 -0
  853. /package/{dist/components → components}/format.d.ts.map +0 -0
  854. /package/{dist/components → components}/format.js +0 -0
  855. /package/{dist/components → components}/inventory/CopyableAddress.d.ts +0 -0
  856. /package/{dist/components → components}/inventory/CopyableAddress.d.ts.map +0 -0
  857. /package/{dist/components → components}/inventory/CopyableAddress.js +0 -0
  858. /package/{dist/components → components}/inventory/InventoryToolbar.d.ts +0 -0
  859. /package/{dist/components → components}/inventory/InventoryToolbar.d.ts.map +0 -0
  860. /package/{dist/components → components}/inventory/InventoryToolbar.js +0 -0
  861. /package/{dist/components → components}/inventory/NftGrid.d.ts +0 -0
  862. /package/{dist/components → components}/inventory/NftGrid.d.ts.map +0 -0
  863. /package/{dist/components → components}/inventory/NftGrid.js +0 -0
  864. /package/{dist/components → components}/inventory/TokenLogo.d.ts +0 -0
  865. /package/{dist/components → components}/inventory/TokenLogo.d.ts.map +0 -0
  866. /package/{dist/components → components}/inventory/TokenLogo.js +0 -0
  867. /package/{dist/components → components}/inventory/TokensTable.d.ts +0 -0
  868. /package/{dist/components → components}/inventory/TokensTable.d.ts.map +0 -0
  869. /package/{dist/components → components}/inventory/TokensTable.js +0 -0
  870. /package/{dist/components → components}/inventory/constants.d.ts +0 -0
  871. /package/{dist/components → components}/inventory/constants.d.ts.map +0 -0
  872. /package/{dist/components → components}/inventory/constants.js +0 -0
  873. /package/{dist/components → components}/inventory/index.d.ts +0 -0
  874. /package/{dist/components → components}/inventory/index.d.ts.map +0 -0
  875. /package/{dist/components → components}/inventory/index.js +0 -0
  876. /package/{dist/components → components}/inventory/media-url.d.ts +0 -0
  877. /package/{dist/components → components}/inventory/media-url.d.ts.map +0 -0
  878. /package/{dist/components → components}/inventory/media-url.js +0 -0
  879. /package/{dist/components → components}/inventory/useInventoryData.d.ts +0 -0
  880. /package/{dist/components → components}/inventory/useInventoryData.d.ts.map +0 -0
  881. /package/{dist/components → components}/inventory/useInventoryData.js +0 -0
  882. /package/{dist/components → components}/knowledge-upload-image.d.ts +0 -0
  883. /package/{dist/components → components}/knowledge-upload-image.d.ts.map +0 -0
  884. /package/{dist/components → components}/knowledge-upload-image.js +0 -0
  885. /package/{dist/components → components}/labels.d.ts +0 -0
  886. /package/{dist/components → components}/labels.d.ts.map +0 -0
  887. /package/{dist/components → components}/labels.js +0 -0
  888. /package/{dist/components → components}/onboarding/ActivateStep.d.ts +0 -0
  889. /package/{dist/components → components}/onboarding/ActivateStep.d.ts.map +0 -0
  890. /package/{dist/components → components}/onboarding/ActivateStep.js +0 -0
  891. /package/{dist/components → components}/onboarding/ConnectionStep.d.ts +0 -0
  892. /package/{dist/components → components}/onboarding/IdentityStep.d.ts +0 -0
  893. /package/{dist/components → components}/onboarding/IdentityStep.d.ts.map +0 -0
  894. /package/{dist/components → components}/onboarding/IdentityStep.js +0 -0
  895. /package/{dist/components → components}/onboarding/OnboardingPanel.d.ts +0 -0
  896. /package/{dist/components → components}/onboarding/OnboardingPanel.d.ts.map +0 -0
  897. /package/{dist/components → components}/onboarding/OnboardingPanel.js +0 -0
  898. /package/{dist/components → components}/onboarding/OnboardingStepNav.d.ts +0 -0
  899. /package/{dist/components → components}/onboarding/OnboardingStepNav.d.ts.map +0 -0
  900. /package/{dist/components → components}/onboarding/OnboardingStepNav.js +0 -0
  901. /package/{dist/components → components}/onboarding/PermissionsStep.d.ts +0 -0
  902. /package/{dist/components → components}/onboarding/PermissionsStep.d.ts.map +0 -0
  903. /package/{dist/components → components}/onboarding/PermissionsStep.js +0 -0
  904. /package/{dist/components → components}/onboarding/RpcStep.d.ts +0 -0
  905. /package/{dist/components → components}/onboarding/RpcStep.d.ts.map +0 -0
  906. /package/{dist/components → components}/onboarding/RpcStep.js +0 -0
  907. /package/{dist/components → components}/permissions/PermissionIcon.d.ts +0 -0
  908. /package/{dist/components → components}/permissions/PermissionIcon.d.ts.map +0 -0
  909. /package/{dist/components → components}/permissions/PermissionIcon.js +0 -0
  910. /package/{dist/components → components}/permissions/StreamingPermissions.d.ts +0 -0
  911. /package/{dist/components → components}/plugins/showcase-data.d.ts +0 -0
  912. /package/{dist/components → components}/plugins/showcase-data.d.ts.map +0 -0
  913. /package/{dist/components → components}/plugins/showcase-data.js +0 -0
  914. /package/{dist/components → components}/shared/ShellHeaderControls.d.ts +0 -0
  915. /package/{dist/components → components}/shared/ShellHeaderControls.d.ts.map +0 -0
  916. /package/{dist/components → components}/shared/ShellHeaderControls.js +0 -0
  917. /package/{dist/components → components}/shared-companion-scene-context.d.ts +0 -0
  918. /package/{dist/components → components}/shared-companion-scene-context.d.ts.map +0 -0
  919. /package/{dist/components → components}/shared-companion-scene-context.js +0 -0
  920. /package/{dist/components → components}/skeletons.d.ts +0 -0
  921. /package/{dist/components → components}/skeletons.d.ts.map +0 -0
  922. /package/{dist/components → components}/skeletons.js +0 -0
  923. /package/{dist/components → components}/stream/ActivityFeed.d.ts +0 -0
  924. /package/{dist/components → components}/stream/ActivityFeed.d.ts.map +0 -0
  925. /package/{dist/components → components}/stream/ActivityFeed.js +0 -0
  926. /package/{dist/components → components}/stream/AvatarPip.d.ts +0 -0
  927. /package/{dist/components → components}/stream/AvatarPip.d.ts.map +0 -0
  928. /package/{dist/components → components}/stream/AvatarPip.js +0 -0
  929. /package/{dist/components → components}/stream/ChatContent.d.ts +0 -0
  930. /package/{dist/components → components}/stream/ChatContent.d.ts.map +0 -0
  931. /package/{dist/components → components}/stream/ChatContent.js +0 -0
  932. /package/{dist/components → components}/stream/ChatTicker.d.ts +0 -0
  933. /package/{dist/components → components}/stream/ChatTicker.d.ts.map +0 -0
  934. /package/{dist/components → components}/stream/ChatTicker.js +0 -0
  935. /package/{dist/components → components}/stream/IdleContent.d.ts +0 -0
  936. /package/{dist/components → components}/stream/IdleContent.d.ts.map +0 -0
  937. /package/{dist/components → components}/stream/IdleContent.js +0 -0
  938. /package/{dist/components → components}/stream/StatusBar.d.ts +0 -0
  939. /package/{dist/components → components}/stream/StatusBar.d.ts.map +0 -0
  940. /package/{dist/components → components}/stream/StatusBar.js +0 -0
  941. /package/{dist/components → components}/stream/StreamSettings.d.ts +0 -0
  942. /package/{dist/components → components}/stream/StreamSettings.d.ts.map +0 -0
  943. /package/{dist/components → components}/stream/StreamSettings.js +0 -0
  944. /package/{dist/components → components}/stream/StreamTerminal.d.ts +0 -0
  945. /package/{dist/components → components}/stream/StreamTerminal.d.ts.map +0 -0
  946. /package/{dist/components → components}/stream/StreamTerminal.js +0 -0
  947. /package/{dist/components → components}/stream/StreamVoiceConfig.d.ts +0 -0
  948. /package/{dist/components → components}/stream/StreamVoiceConfig.d.ts.map +0 -0
  949. /package/{dist/components → components}/stream/StreamVoiceConfig.js +0 -0
  950. /package/{dist/components → components}/stream/helpers.d.ts +0 -0
  951. /package/{dist/components → components}/stream/helpers.d.ts.map +0 -0
  952. /package/{dist/components → components}/stream/helpers.js +0 -0
  953. /package/{dist/components → components}/stream/overlays/OverlayLayer.d.ts +0 -0
  954. /package/{dist/components → components}/stream/overlays/OverlayLayer.d.ts.map +0 -0
  955. /package/{dist/components → components}/stream/overlays/OverlayLayer.js +0 -0
  956. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.d.ts +0 -0
  957. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.d.ts.map +0 -0
  958. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.js +0 -0
  959. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.d.ts +0 -0
  960. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.d.ts.map +0 -0
  961. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.js +0 -0
  962. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.d.ts +0 -0
  963. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.d.ts.map +0 -0
  964. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.js +0 -0
  965. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.d.ts +0 -0
  966. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.d.ts.map +0 -0
  967. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.js +0 -0
  968. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.d.ts +0 -0
  969. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.d.ts.map +0 -0
  970. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.js +0 -0
  971. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.d.ts +0 -0
  972. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.d.ts.map +0 -0
  973. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.js +0 -0
  974. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.d.ts +0 -0
  975. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.d.ts.map +0 -0
  976. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.js +0 -0
  977. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.d.ts +0 -0
  978. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.d.ts.map +0 -0
  979. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.js +0 -0
  980. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.d.ts +0 -0
  981. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.d.ts.map +0 -0
  982. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.js +0 -0
  983. /package/{dist/components → components}/stream/overlays/built-in/index.d.ts +0 -0
  984. /package/{dist/components → components}/stream/overlays/built-in/index.d.ts.map +0 -0
  985. /package/{dist/components → components}/stream/overlays/built-in/index.js +0 -0
  986. /package/{dist/components → components}/stream/overlays/registry.d.ts +0 -0
  987. /package/{dist/components → components}/stream/overlays/registry.d.ts.map +0 -0
  988. /package/{dist/components → components}/stream/overlays/registry.js +0 -0
  989. /package/{dist/components → components}/stream/overlays/types.d.ts +0 -0
  990. /package/{dist/components → components}/stream/overlays/types.d.ts.map +0 -0
  991. /package/{dist/components → components}/stream/overlays/types.js +0 -0
  992. /package/{dist/components → components}/stream/overlays/useOverlayLayout.d.ts +0 -0
  993. /package/{dist/components → components}/stream/overlays/useOverlayLayout.d.ts.map +0 -0
  994. /package/{dist/components → components}/stream/overlays/useOverlayLayout.js +0 -0
  995. /package/{dist/components → components}/trajectory-format.d.ts +0 -0
  996. /package/{dist/components → components}/trajectory-format.d.ts.map +0 -0
  997. /package/{dist/components → components}/trajectory-format.js +0 -0
  998. /package/{dist/components → components}/ui-badges.d.ts +0 -0
  999. /package/{dist/components → components}/ui-badges.d.ts.map +0 -0
  1000. /package/{dist/components → components}/ui-badges.js +0 -0
  1001. /package/{dist/components → components}/ui-switch.d.ts +0 -0
  1002. /package/{dist/components → components}/ui-switch.d.ts.map +0 -0
  1003. /package/{dist/components → components}/vector-browser-three.d.ts +0 -0
  1004. /package/{dist/components → components}/vector-browser-three.d.ts.map +0 -0
  1005. /package/{dist/components → components}/vector-browser-three.js +0 -0
  1006. /package/{dist/config → config}/branding.d.ts +0 -0
  1007. /package/{dist/config → config}/branding.d.ts.map +0 -0
  1008. /package/{dist/config → config}/branding.js +0 -0
  1009. /package/{dist/config → config}/config-catalog.d.ts +0 -0
  1010. /package/{dist/config → config}/config-catalog.d.ts.map +0 -0
  1011. /package/{dist/config → config}/config-catalog.js +0 -0
  1012. /package/{dist/config → config}/config-field.d.ts +0 -0
  1013. /package/{dist/config → config}/config-field.d.ts.map +0 -0
  1014. /package/{dist/config → config}/config-field.js +0 -0
  1015. /package/{dist/config → config}/config-renderer.d.ts +0 -0
  1016. /package/{dist/config → config}/config-renderer.d.ts.map +0 -0
  1017. /package/{dist/config → config}/config-renderer.js +0 -0
  1018. /package/{dist/config → config}/index.d.ts +0 -0
  1019. /package/{dist/config → config}/index.d.ts.map +0 -0
  1020. /package/{dist/config → config}/index.js +0 -0
  1021. /package/{dist/config → config}/ui-renderer.d.ts +0 -0
  1022. /package/{dist/config → config}/ui-renderer.d.ts.map +0 -0
  1023. /package/{dist/config → config}/ui-renderer.js +0 -0
  1024. /package/{dist/config → config}/ui-spec.d.ts +0 -0
  1025. /package/{dist/config → config}/ui-spec.d.ts.map +0 -0
  1026. /package/{dist/config → config}/ui-spec.js +0 -0
  1027. /package/{dist/events → events}/index.d.ts +0 -0
  1028. /package/{dist/events → events}/index.d.ts.map +0 -0
  1029. /package/{dist/events → events}/index.js +0 -0
  1030. /package/{dist/hooks → hooks}/index.d.ts +0 -0
  1031. /package/{dist/hooks → hooks}/index.d.ts.map +0 -0
  1032. /package/{dist/hooks → hooks}/index.js +0 -0
  1033. /package/{dist/hooks → hooks}/useBugReport.d.ts +0 -0
  1034. /package/{dist/hooks → hooks}/useBugReport.d.ts.map +0 -0
  1035. /package/{dist/hooks → hooks}/useBugReport.js +0 -0
  1036. /package/{dist/hooks → hooks}/useCanvasWindow.d.ts +0 -0
  1037. /package/{dist/hooks → hooks}/useCanvasWindow.d.ts.map +0 -0
  1038. /package/{dist/hooks → hooks}/useCanvasWindow.js +0 -0
  1039. /package/{dist/hooks → hooks}/useChatAvatarVoice.d.ts +0 -0
  1040. /package/{dist/hooks → hooks}/useChatAvatarVoice.d.ts.map +0 -0
  1041. /package/{dist/hooks → hooks}/useChatAvatarVoice.js +0 -0
  1042. /package/{dist/hooks → hooks}/useClickOutside.d.ts +0 -0
  1043. /package/{dist/hooks → hooks}/useClickOutside.d.ts.map +0 -0
  1044. /package/{dist/hooks → hooks}/useClickOutside.js +0 -0
  1045. /package/{dist/hooks → hooks}/useContextMenu.d.ts +0 -0
  1046. /package/{dist/hooks → hooks}/useContextMenu.d.ts.map +0 -0
  1047. /package/{dist/hooks → hooks}/useContextMenu.js +0 -0
  1048. /package/{dist/hooks → hooks}/useKeyboardShortcuts.d.ts +0 -0
  1049. /package/{dist/hooks → hooks}/useKeyboardShortcuts.d.ts.map +0 -0
  1050. /package/{dist/hooks → hooks}/useKeyboardShortcuts.js +0 -0
  1051. /package/{dist/hooks → hooks}/useLifoSync.d.ts +0 -0
  1052. /package/{dist/hooks → hooks}/useLifoSync.d.ts.map +0 -0
  1053. /package/{dist/hooks → hooks}/useLifoSync.js +0 -0
  1054. /package/{dist/hooks → hooks}/useMemoryMonitor.d.ts +0 -0
  1055. /package/{dist/hooks → hooks}/useMemoryMonitor.d.ts.map +0 -0
  1056. /package/{dist/hooks → hooks}/useMemoryMonitor.js +0 -0
  1057. /package/{dist/hooks → hooks}/useRenderGuard.d.ts +0 -0
  1058. /package/{dist/hooks → hooks}/useRenderGuard.d.ts.map +0 -0
  1059. /package/{dist/hooks → hooks}/useRenderGuard.js +0 -0
  1060. /package/{dist/hooks → hooks}/useRetakeCapture.d.ts +0 -0
  1061. /package/{dist/hooks → hooks}/useRetakeCapture.d.ts.map +0 -0
  1062. /package/{dist/hooks → hooks}/useRetakeCapture.js +0 -0
  1063. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.d.ts +0 -0
  1064. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.d.ts.map +0 -0
  1065. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.js +0 -0
  1066. /package/{dist/hooks → hooks}/useTimeout.d.ts +0 -0
  1067. /package/{dist/hooks → hooks}/useTimeout.d.ts.map +0 -0
  1068. /package/{dist/hooks → hooks}/useTimeout.js +0 -0
  1069. /package/{dist/hooks → hooks}/useVoiceChat.d.ts +0 -0
  1070. /package/{dist/hooks → hooks}/useVoiceChat.d.ts.map +0 -0
  1071. /package/{dist/hooks → hooks}/useVoiceChat.js +0 -0
  1072. /package/{dist/hooks → hooks}/useWhatsAppPairing.d.ts +0 -0
  1073. /package/{dist/hooks → hooks}/useWhatsAppPairing.d.ts.map +0 -0
  1074. /package/{dist/hooks → hooks}/useWhatsAppPairing.js +0 -0
  1075. /package/{dist/i18n → i18n}/index.d.ts +0 -0
  1076. /package/{dist/i18n → i18n}/index.d.ts.map +0 -0
  1077. /package/{dist/i18n → i18n}/index.js +0 -0
  1078. /package/{dist/i18n → i18n}/messages.d.ts +0 -0
  1079. /package/{dist/i18n → i18n}/messages.d.ts.map +0 -0
  1080. /package/{dist/i18n → i18n}/messages.js +0 -0
  1081. /package/{dist/index.d.ts → index.d.ts} +0 -0
  1082. /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  1083. /package/{dist/index.js → index.js} +0 -0
  1084. /package/{dist/navigation → navigation}/index.d.ts +0 -0
  1085. /package/{dist/navigation → navigation}/index.d.ts.map +0 -0
  1086. /package/{dist/navigation → navigation}/index.js +0 -0
  1087. /package/{dist/onboarding-config.d.ts → onboarding-config.d.ts} +0 -0
  1088. /package/{dist/onboarding-config.d.ts.map → onboarding-config.d.ts.map} +0 -0
  1089. /package/{dist/onboarding-config.js → onboarding-config.js} +0 -0
  1090. /package/{dist/platform → platform}/browser-launch.d.ts +0 -0
  1091. /package/{dist/platform → platform}/browser-launch.d.ts.map +0 -0
  1092. /package/{dist/platform → platform}/browser-launch.js +0 -0
  1093. /package/{dist/platform → platform}/index.d.ts +0 -0
  1094. /package/{dist/platform → platform}/index.d.ts.map +0 -0
  1095. /package/{dist/platform → platform}/index.js +0 -0
  1096. /package/{dist/platform → platform}/init.d.ts +0 -0
  1097. /package/{dist/platform → platform}/init.d.ts.map +0 -0
  1098. /package/{dist/platform → platform}/init.js +0 -0
  1099. /package/{dist/platform → platform}/lifo.d.ts +0 -0
  1100. /package/{dist/platform → platform}/lifo.d.ts.map +0 -0
  1101. /package/{dist/platform → platform}/lifo.js +0 -0
  1102. /package/{dist/providers → providers}/index.d.ts +0 -0
  1103. /package/{dist/providers → providers}/index.d.ts.map +0 -0
  1104. /package/{dist/providers → providers}/index.js +0 -0
  1105. /package/{dist/shell-params.d.ts → shell-params.d.ts} +0 -0
  1106. /package/{dist/shell-params.d.ts.map → shell-params.d.ts.map} +0 -0
  1107. /package/{dist/shell-params.js → shell-params.js} +0 -0
  1108. /package/{dist/state → state}/AppContext.d.ts +0 -0
  1109. /package/{dist/state → state}/index.d.ts +0 -0
  1110. /package/{dist/state → state}/index.d.ts.map +0 -0
  1111. /package/{dist/state → state}/index.js +0 -0
  1112. /package/{dist/state → state}/internal.d.ts +0 -0
  1113. /package/{dist/state → state}/internal.d.ts.map +0 -0
  1114. /package/{dist/state → state}/internal.js +0 -0
  1115. /package/{dist/state → state}/onboarding-resume.d.ts +0 -0
  1116. /package/{dist/state → state}/onboarding-resume.d.ts.map +0 -0
  1117. /package/{dist/state → state}/onboarding-resume.js +0 -0
  1118. /package/{dist/state → state}/parsers.d.ts +0 -0
  1119. /package/{dist/state → state}/parsers.d.ts.map +0 -0
  1120. /package/{dist/state → state}/parsers.js +0 -0
  1121. /package/{dist/state → state}/persistence.d.ts +0 -0
  1122. /package/{dist/state → state}/persistence.d.ts.map +0 -0
  1123. /package/{dist/state → state}/persistence.js +0 -0
  1124. /package/{dist/state → state}/shell-routing.d.ts +0 -0
  1125. /package/{dist/state → state}/shell-routing.d.ts.map +0 -0
  1126. /package/{dist/state → state}/shell-routing.js +0 -0
  1127. /package/{dist/state → state}/types.d.ts +0 -0
  1128. /package/{dist/state → state}/types.d.ts.map +0 -0
  1129. /package/{dist/state → state}/types.js +0 -0
  1130. /package/{dist/state → state}/ui-preferences.d.ts +0 -0
  1131. /package/{dist/state → state}/ui-preferences.d.ts.map +0 -0
  1132. /package/{dist/state → state}/ui-preferences.js +0 -0
  1133. /package/{dist/state → state}/useApp.d.ts +0 -0
  1134. /package/{dist/state → state}/useApp.d.ts.map +0 -0
  1135. /package/{dist/state → state}/useApp.js +0 -0
  1136. /package/{dist/state → state}/vrm.d.ts +0 -0
  1137. /package/{dist/state → state}/vrm.d.ts.map +0 -0
  1138. /package/{dist/state → state}/vrm.js +0 -0
  1139. /package/{dist/styles → styles}/base.css +0 -0
  1140. /package/{dist/styles → styles}/styles.css +0 -0
  1141. /package/{dist/styles → styles}/xterm.css +0 -0
  1142. /package/{dist/types → types}/index.d.ts +0 -0
  1143. /package/{dist/types → types}/index.d.ts.map +0 -0
  1144. /package/{dist/types → types}/index.js +0 -0
  1145. /package/{dist/utils → utils}/asset-url.d.ts +0 -0
  1146. /package/{dist/utils → utils}/asset-url.d.ts.map +0 -0
  1147. /package/{dist/utils → utils}/asset-url.js +0 -0
  1148. /package/{dist/utils → utils}/assistant-text.d.ts +0 -0
  1149. /package/{dist/utils → utils}/assistant-text.d.ts.map +0 -0
  1150. /package/{dist/utils → utils}/assistant-text.js +0 -0
  1151. /package/{dist/utils → utils}/clipboard.d.ts +0 -0
  1152. /package/{dist/utils → utils}/clipboard.d.ts.map +0 -0
  1153. /package/{dist/utils → utils}/clipboard.js +0 -0
  1154. /package/{dist/utils → utils}/desktop-dialogs.d.ts +0 -0
  1155. /package/{dist/utils → utils}/desktop-dialogs.d.ts.map +0 -0
  1156. /package/{dist/utils → utils}/desktop-dialogs.js +0 -0
  1157. /package/{dist/utils → utils}/eliza-globals.d.ts +0 -0
  1158. /package/{dist/utils → utils}/eliza-globals.d.ts.map +0 -0
  1159. /package/{dist/utils → utils}/eliza-globals.js +0 -0
  1160. /package/{dist/utils → utils}/index.d.ts +0 -0
  1161. /package/{dist/utils → utils}/index.d.ts.map +0 -0
  1162. /package/{dist/utils → utils}/index.js +0 -0
  1163. /package/{dist/utils → utils}/number-parsing.d.ts +0 -0
  1164. /package/{dist/utils → utils}/number-parsing.d.ts.map +0 -0
  1165. /package/{dist/utils → utils}/number-parsing.js +0 -0
  1166. /package/{dist/utils → utils}/openExternalUrl.d.ts +0 -0
  1167. /package/{dist/utils → utils}/openExternalUrl.d.ts.map +0 -0
  1168. /package/{dist/utils → utils}/openExternalUrl.js +0 -0
  1169. /package/{dist/utils → utils}/spoken-text.d.ts +0 -0
  1170. /package/{dist/utils → utils}/spoken-text.d.ts.map +0 -0
  1171. /package/{dist/utils → utils}/spoken-text.js +0 -0
  1172. /package/{dist/utils → utils}/streaming-text.d.ts +0 -0
  1173. /package/{dist/utils → utils}/streaming-text.d.ts.map +0 -0
  1174. /package/{dist/utils → utils}/streaming-text.js +0 -0
  1175. /package/{dist/voice → voice}/index.d.ts +0 -0
  1176. /package/{dist/voice → voice}/index.d.ts.map +0 -0
  1177. /package/{dist/voice → voice}/index.js +0 -0
  1178. /package/{dist/voice → voice}/types.d.ts +0 -0
  1179. /package/{dist/voice → voice}/types.d.ts.map +0 -0
  1180. /package/{dist/voice → voice}/types.js +0 -0
  1181. /package/{dist/wallet-rpc.d.ts → wallet-rpc.d.ts} +0 -0
  1182. /package/{dist/wallet-rpc.d.ts.map → wallet-rpc.d.ts.map} +0 -0
  1183. /package/{dist/wallet-rpc.js → wallet-rpc.js} +0 -0
@@ -1,1696 +0,0 @@
1
- import {
2
- Button,
3
- Dialog,
4
- DialogContent,
5
- DialogHeader,
6
- DialogTitle,
7
- Input,
8
- SectionCard,
9
- } from "@elizaos/ui";
10
- import {
11
- AlertCircle,
12
- CircleDollarSign,
13
- CreditCard,
14
- ExternalLink,
15
- LayoutDashboard,
16
- Loader2,
17
- Plus,
18
- RefreshCw,
19
- Server,
20
- Shield,
21
- Terminal,
22
- Trash2,
23
- Wallet,
24
- X,
25
- Zap,
26
- } from "lucide-react";
27
- import { useCallback, useEffect, useReducer, useRef, useState } from "react";
28
- import {
29
- type CloudBillingCheckoutResponse,
30
- type CloudBillingSettings,
31
- type CloudBillingSummary,
32
- type CloudCompatAgent,
33
- client,
34
- } from "../api";
35
- import { useApp } from "../state";
36
- import { openExternalUrl } from "../utils";
37
- import { StripeEmbeddedCheckout } from "./StripeEmbeddedCheckout";
38
-
39
- const ELIZA_CLOUD_LOGIN_URL =
40
- "https://www.elizacloud.ai/login?returnTo=%2Fdashboard%2Feliza";
41
- const ELIZA_CLOUD_INSTANCES_URL = "https://www.elizacloud.ai/dashboard/eliza";
42
- const BILLING_PRESET_AMOUNTS = [10, 25, 100];
43
-
44
- const STATUS_BADGE: Record<string, { label: string; className: string }> = {
45
- running: {
46
- label: "Running",
47
- className: "bg-ok/10 text-ok border-ok/20",
48
- },
49
- queued: {
50
- label: "Queued",
51
- className: "bg-warn/10 text-warn border-warn/20",
52
- },
53
- provisioning: {
54
- label: "Provisioning",
55
- className: "bg-accent/10 text-txt border-accent/20",
56
- },
57
- stopped: {
58
- label: "Stopped",
59
- className: "bg-muted/10 text-muted border-border/40",
60
- },
61
- failed: {
62
- label: "Failed",
63
- className: "bg-danger/10 text-danger border-danger/20",
64
- },
65
- };
66
-
67
- function AgentStatusBadge({ status }: { status: string }) {
68
- const badge = STATUS_BADGE[status] ?? STATUS_BADGE.stopped;
69
- return (
70
- <span
71
- className={`text-[10px] px-2 py-0.5 rounded-full font-bold uppercase tracking-wider border ${badge?.className}`}
72
- >
73
- {badge?.label}
74
- </span>
75
- );
76
- }
77
-
78
- function CloudAgentCard({
79
- agent,
80
- onDelete,
81
- deleting,
82
- launching,
83
- onLaunch,
84
- onSelect,
85
- }: {
86
- agent: CloudCompatAgent;
87
- onDelete: (id: string) => void;
88
- deleting: boolean;
89
- launching: boolean;
90
- onLaunch: (id: string) => void;
91
- onSelect?: (id: string) => void;
92
- }) {
93
- return (
94
- // biome-ignore lint/a11y/useSemanticElements: cannot use button due to nested buttons
95
- <div
96
- className="rounded-2xl border border-border/50 bg-bg/30 p-5 flex flex-col justify-between gap-4 hover:border-accent/30 transition-all duration-200 cursor-pointer"
97
- onClick={() => onSelect?.(agent.agent_id)}
98
- onKeyDown={(e) => {
99
- if (e.key === "Enter" || e.key === " ") {
100
- e.preventDefault();
101
- onSelect?.(agent.agent_id);
102
- }
103
- }}
104
- role="button"
105
- tabIndex={0}
106
- >
107
- <div className="flex items-start justify-between">
108
- <div className="flex items-center gap-2">
109
- <Server className="w-4 h-4 text-txt shrink-0" />
110
- <span className="font-bold text-sm text-txt-strong truncate max-w-[140px]">
111
- {agent.agent_name || "Unnamed Agent"}
112
- </span>
113
- </div>
114
- <AgentStatusBadge status={agent.status} />
115
- </div>
116
-
117
- <div className="text-[11px] text-muted space-y-1">
118
- <div className="flex justify-between">
119
- <span>Node</span>
120
- <span className="font-mono text-txt-strong/70">
121
- {agent.node_id?.slice(0, 8) ?? "—"}
122
- </span>
123
- </div>
124
- <div className="flex justify-between">
125
- <span>Created</span>
126
- <span className="text-txt-strong/70">
127
- {new Date(agent.created_at).toLocaleDateString()}
128
- </span>
129
- </div>
130
- </div>
131
-
132
- <div className="flex gap-2 mt-1">
133
- <Button
134
- variant="outline"
135
- size="sm"
136
- className="flex-1 rounded-xl h-8 text-xs border-border/40"
137
- onClick={(event) => {
138
- event.stopPropagation();
139
- onLaunch(agent.agent_id);
140
- }}
141
- disabled={launching}
142
- >
143
- {launching ? (
144
- <Loader2 className="w-3 h-3 mr-1 animate-spin" />
145
- ) : (
146
- <ExternalLink className="w-3 h-3 mr-1" />
147
- )}
148
- Open
149
- </Button>
150
-
151
- <Button
152
- variant="outline"
153
- size="sm"
154
- className="settings-icon-button rounded-xl h-8 text-xs border-danger/30 text-danger hover:bg-danger/10"
155
- onClick={(event) => {
156
- event.stopPropagation();
157
- onDelete(agent.agent_id);
158
- }}
159
- disabled={deleting || launching}
160
- >
161
- {deleting ? (
162
- <Loader2 className="w-3 h-3 animate-spin" />
163
- ) : (
164
- <Trash2 className="w-3 h-3" />
165
- )}
166
- </Button>
167
- </div>
168
- </div>
169
- );
170
- }
171
-
172
- function isRecord(value: unknown): value is Record<string, unknown> {
173
- return typeof value === "object" && value !== null;
174
- }
175
-
176
- function unwrapBillingData<T extends Record<string, unknown>>(value: T): T {
177
- if (isRecord(value.data)) {
178
- return value.data as T;
179
- }
180
- return value;
181
- }
182
-
183
- function readString(value: unknown): string | undefined {
184
- return typeof value === "string" && value.trim() ? value : undefined;
185
- }
186
-
187
- function readNumber(value: unknown): number | null {
188
- if (typeof value === "number" && Number.isFinite(value)) return value;
189
- if (typeof value === "string" && value.trim()) {
190
- const parsed = Number(value);
191
- return Number.isFinite(parsed) ? parsed : null;
192
- }
193
- return null;
194
- }
195
-
196
- function readBoolean(value: unknown): boolean | undefined {
197
- return typeof value === "boolean" ? value : undefined;
198
- }
199
-
200
- function normalizeBillingSummary(
201
- raw: CloudBillingSummary,
202
- ): CloudBillingSummary {
203
- const source = unwrapBillingData(raw);
204
- return {
205
- ...raw,
206
- ...source,
207
- balance:
208
- readNumber(source.balance) ??
209
- readNumber((source as Record<string, unknown>).creditBalance) ??
210
- null,
211
- currency:
212
- readString(source.currency) ??
213
- readString((source as Record<string, unknown>).balanceCurrency),
214
- topUpUrl:
215
- readString(source.topUpUrl) ??
216
- readString((source as Record<string, unknown>).billingUrl),
217
- embeddedCheckoutEnabled:
218
- readBoolean(source.embeddedCheckoutEnabled) ??
219
- readBoolean((source as Record<string, unknown>).embedded),
220
- hostedCheckoutEnabled:
221
- readBoolean(source.hostedCheckoutEnabled) ??
222
- readBoolean((source as Record<string, unknown>).hosted),
223
- cryptoEnabled:
224
- readBoolean(source.cryptoEnabled) ??
225
- readBoolean((source as Record<string, unknown>).crypto),
226
- low: readBoolean(source.low),
227
- critical: readBoolean(source.critical),
228
- };
229
- }
230
-
231
- function normalizeBillingSettings(
232
- raw: CloudBillingSettings,
233
- ): CloudBillingSettings {
234
- const source = unwrapBillingData(raw);
235
- return {
236
- ...raw,
237
- ...source,
238
- settings: isRecord(source.settings) ? source.settings : raw.settings,
239
- };
240
- }
241
-
242
- function getBillingAutoTopUp(
243
- settings: CloudBillingSettings | null,
244
- ): Record<string, unknown> {
245
- const rawSettings = isRecord(settings?.settings) ? settings.settings : null;
246
- return isRecord(rawSettings?.autoTopUp) ? rawSettings.autoTopUp : {};
247
- }
248
-
249
- function getBillingLimits(
250
- settings: CloudBillingSettings | null,
251
- ): Record<string, unknown> {
252
- const rawSettings = isRecord(settings?.settings) ? settings.settings : null;
253
- return isRecord(rawSettings?.limits) ? rawSettings.limits : {};
254
- }
255
-
256
- function resolveCheckoutUrl(
257
- response: CloudBillingCheckoutResponse,
258
- ): string | null {
259
- return (
260
- readString(response.checkoutUrl) ??
261
- readString(response.url) ??
262
- readString((response as Record<string, unknown>).hostedUrl) ??
263
- null
264
- );
265
- }
266
-
267
- interface AutoTopUpFormState {
268
- amount: string;
269
- dirty: boolean;
270
- enabled: boolean;
271
- sourceKey: string;
272
- threshold: string;
273
- }
274
-
275
- type AutoTopUpFormAction =
276
- | { type: "hydrate"; next: AutoTopUpFormState; force?: boolean }
277
- | { type: "setAmount"; value: string }
278
- | { type: "setEnabled"; value: boolean }
279
- | { type: "setThreshold"; value: string };
280
-
281
- function buildAutoTopUpFormState(
282
- billingSummary: CloudBillingSummary | null,
283
- billingSettings: CloudBillingSettings | null,
284
- ): AutoTopUpFormState {
285
- const autoTopUp = getBillingAutoTopUp(billingSettings);
286
- const minimumTopUp =
287
- readNumber(
288
- (billingSummary as Record<string, unknown> | null)?.minimumTopUp,
289
- ) ?? 1;
290
- const enabled = readBoolean(autoTopUp.enabled) ?? false;
291
- const amount = String(readNumber(autoTopUp.amount) ?? minimumTopUp);
292
- const threshold = String(readNumber(autoTopUp.threshold) ?? 5);
293
- return {
294
- amount,
295
- dirty: false,
296
- enabled,
297
- sourceKey: JSON.stringify([enabled, amount, threshold]),
298
- threshold,
299
- };
300
- }
301
-
302
- function autoTopUpFormReducer(
303
- state: AutoTopUpFormState,
304
- action: AutoTopUpFormAction,
305
- ): AutoTopUpFormState {
306
- switch (action.type) {
307
- case "hydrate":
308
- if (!action.force && state.dirty) {
309
- return state;
310
- }
311
- if (state.sourceKey === action.next.sourceKey && !state.dirty) {
312
- return state;
313
- }
314
- return action.next;
315
- case "setAmount":
316
- return { ...state, amount: action.value, dirty: true };
317
- case "setEnabled":
318
- return { ...state, enabled: action.value, dirty: true };
319
- case "setThreshold":
320
- return { ...state, threshold: action.value, dirty: true };
321
- default:
322
- return state;
323
- }
324
- }
325
-
326
- export function CloudDashboard() {
327
- const {
328
- t,
329
- elizaCloudConnected,
330
- elizaCloudCredits,
331
- elizaCloudCreditsLow,
332
- elizaCloudCreditsCritical,
333
- elizaCloudTopUpUrl,
334
- elizaCloudUserId,
335
- cloudDashboardView,
336
- elizaCloudLoginBusy,
337
- handleCloudLogin,
338
- handleCloudDisconnect,
339
- elizaCloudDisconnecting: cloudDisconnecting,
340
- loadDropStatus,
341
- walletAddresses,
342
- walletBalances,
343
- retryStartup,
344
- setActionNotice,
345
- setState,
346
- setTab,
347
- } = useApp();
348
-
349
- const [refreshing, setRefreshing] = useState(false);
350
- const [billingLoading, setBillingLoading] = useState(false);
351
- const [billingError, setBillingError] = useState<string | null>(null);
352
- const [billingSummary, setBillingSummary] =
353
- useState<CloudBillingSummary | null>(null);
354
- const [billingSettings, setBillingSettings] =
355
- useState<CloudBillingSettings | null>(null);
356
- const [billingAmount, setBillingAmount] = useState("25");
357
- const [autoTopUpForm, dispatchAutoTopUpForm] = useReducer(
358
- autoTopUpFormReducer,
359
- buildAutoTopUpFormState(null, null),
360
- );
361
- const [billingSettingsBusy, setBillingSettingsBusy] = useState(false);
362
- const [checkoutBusy, setCheckoutBusy] = useState(false);
363
- const [checkoutSession, setCheckoutSession] =
364
- useState<CloudBillingCheckoutResponse | null>(null);
365
- const [checkoutDialogOpen, setCheckoutDialogOpen] = useState(false);
366
- const [cryptoBusy, setCryptoBusy] = useState(false);
367
- const [cryptoQuote, setCryptoQuote] = useState<Record<
368
- string,
369
- unknown
370
- > | null>(null);
371
- const [cryptoPayBusy, setCryptoPayBusy] = useState(false);
372
- const [cryptoPayResult, setCryptoPayResult] = useState<string | null>(null);
373
- const [cloudAgents, setCloudAgents] = useState<CloudCompatAgent[]>([]);
374
- const [agentsLoading, setAgentsLoading] = useState(false);
375
- const [agentsError, setAgentsError] = useState<string | null>(null);
376
- const [deletingAgentId, setDeletingAgentId] = useState<string | null>(null);
377
- const [launchingAgentId, setLaunchingAgentId] = useState<string | null>(null);
378
- const [selectedAgentId, setSelectedAgentId] = useState<string | null>(null);
379
- const selectedAgent = cloudAgents.find((a) => a.agent_id === selectedAgentId);
380
- const [showDeployForm, setShowDeployForm] = useState(false);
381
- const [deployAgentName, setDeployAgentName] = useState("");
382
- const [deploying, setDeploying] = useState(false);
383
- const mountedRef = useRef(true);
384
- const autoTopUpEnabled = autoTopUpForm.enabled;
385
- const autoTopUpAmount = autoTopUpForm.amount;
386
- const autoTopUpThreshold = autoTopUpForm.threshold;
387
-
388
- const fetchCloudAgents = useCallback(async () => {
389
- setAgentsLoading(true);
390
- setAgentsError(null);
391
- try {
392
- const data = await client.getCloudCompatAgents();
393
- if (!mountedRef.current) return;
394
- setCloudAgents(Array.isArray(data.data) ? data.data : []);
395
- } catch (err) {
396
- if (!mountedRef.current) return;
397
- setAgentsError(
398
- err instanceof Error ? err.message : "Failed to load cloud agents",
399
- );
400
- setCloudAgents([]);
401
- } finally {
402
- if (mountedRef.current) setAgentsLoading(false);
403
- }
404
- }, []);
405
-
406
- const fetchBillingData = useCallback(async () => {
407
- setBillingLoading(true);
408
- setBillingError(null);
409
- try {
410
- const [summaryResponse, settingsResponse] = await Promise.all([
411
- client.getCloudBillingSummary().catch((err) => ({ __error: err })),
412
- client.getCloudBillingSettings().catch((err) => ({
413
- __error: err,
414
- })),
415
- ]);
416
-
417
- if (!mountedRef.current) return;
418
-
419
- if (isRecord(summaryResponse) && "__error" in summaryResponse) {
420
- const err = summaryResponse.__error;
421
- throw err instanceof Error
422
- ? err
423
- : new Error("Billing summary unavailable.");
424
- }
425
-
426
- setBillingSummary(normalizeBillingSummary(summaryResponse));
427
-
428
- if (isRecord(settingsResponse) && !("__error" in settingsResponse)) {
429
- setBillingSettings(normalizeBillingSettings(settingsResponse));
430
- } else {
431
- setBillingSettings(null);
432
- }
433
- } catch (err) {
434
- if (!mountedRef.current) return;
435
- setBillingSummary(null);
436
- setBillingSettings(null);
437
- setBillingError(
438
- err instanceof Error ? err.message : "Failed to load billing data.",
439
- );
440
- } finally {
441
- if (mountedRef.current) {
442
- setBillingLoading(false);
443
- }
444
- }
445
- }, []);
446
-
447
- useEffect(() => {
448
- dispatchAutoTopUpForm({
449
- type: "hydrate",
450
- next: buildAutoTopUpFormState(billingSummary, billingSettings),
451
- });
452
- }, [billingSettings, billingSummary]);
453
-
454
- const handleDeleteAgent = useCallback(
455
- async (agentId: string) => {
456
- setDeletingAgentId(agentId);
457
- try {
458
- const data = await client.deleteCloudCompatAgent(agentId);
459
- if (data.success) {
460
- setCloudAgents((prev) => prev.filter((a) => a.agent_id !== agentId));
461
- }
462
- } catch {
463
- // Silently fail — user can retry
464
- } finally {
465
- setDeletingAgentId(null);
466
- if (selectedAgentId === agentId) setSelectedAgentId(null);
467
- }
468
- },
469
- [selectedAgentId],
470
- );
471
-
472
- const handleDeployAgent = useCallback(async () => {
473
- if (!deployAgentName.trim()) return;
474
- setDeploying(true);
475
- try {
476
- const response = await client.createCloudCompatAgent({
477
- agentName: deployAgentName.trim(),
478
- });
479
- if (response.success) {
480
- await fetchCloudAgents();
481
- setShowDeployForm(false);
482
- setDeployAgentName("");
483
- }
484
- } catch {
485
- // Intentionally swallow for now
486
- } finally {
487
- setDeploying(false);
488
- }
489
- }, [deployAgentName, fetchCloudAgents]);
490
-
491
- const handleLaunchAgent = useCallback(
492
- async (agentId: string) => {
493
- setLaunchingAgentId(agentId);
494
- try {
495
- const response = await client.launchCloudCompatAgent(agentId);
496
- if (!response.success || !response.data?.connection?.apiBase) {
497
- throw new Error("Eliza Cloud did not return a launch connection.");
498
- }
499
-
500
- const { connection } = response.data;
501
- client.setBaseUrl(connection.apiBase);
502
- client.setToken(connection.token);
503
- setState("startupError", null);
504
- setState("onboardingRunMode", "cloud");
505
- setState("onboardingCloudProvider", "elizacloud");
506
- setState("onboardingRemoteApiBase", connection.apiBase);
507
- setState("onboardingRemoteToken", connection.token);
508
- setState("onboardingRemoteError", null);
509
- setState("onboardingRemoteConnecting", false);
510
- setState("onboardingRemoteConnected", false);
511
- setActionNotice(
512
- "Opened managed Eliza Cloud instance.",
513
- "success",
514
- 3000,
515
- );
516
- setTab("chat");
517
- retryStartup();
518
- } catch (err) {
519
- setActionNotice(
520
- err instanceof Error
521
- ? err.message
522
- : "Failed to open Eliza Cloud instance.",
523
- "error",
524
- 4200,
525
- );
526
- } finally {
527
- if (mountedRef.current) {
528
- setLaunchingAgentId(null);
529
- }
530
- }
531
- },
532
- [retryStartup, setActionNotice, setState, setTab],
533
- );
534
-
535
- const handleRefresh = useCallback(async () => {
536
- setRefreshing(true);
537
- await Promise.all([
538
- loadDropStatus(),
539
- fetchCloudAgents(),
540
- fetchBillingData(),
541
- ]);
542
- setTimeout(() => setRefreshing(false), 600);
543
- }, [fetchBillingData, fetchCloudAgents, loadDropStatus]);
544
-
545
- const handleSaveBillingSettings = useCallback(async () => {
546
- const limits = getBillingLimits(billingSettings);
547
- const amount = Number(autoTopUpAmount);
548
- const threshold = Number(autoTopUpThreshold);
549
- const minAmount = readNumber(limits.minAmount) ?? 1;
550
- const maxAmount = readNumber(limits.maxAmount) ?? 1000;
551
- const minThreshold = readNumber(limits.minThreshold) ?? 0;
552
- const maxThreshold = readNumber(limits.maxThreshold) ?? 1000;
553
- const hasPaymentMethod =
554
- readBoolean(getBillingAutoTopUp(billingSettings).hasPaymentMethod) ??
555
- readBoolean(
556
- (billingSummary as Record<string, unknown> | null)?.hasPaymentMethod,
557
- ) ??
558
- false;
559
-
560
- if (!Number.isFinite(amount) || amount < minAmount || amount > maxAmount) {
561
- setActionNotice(
562
- `Auto top-up amount must be between $${minAmount} and $${maxAmount}.`,
563
- "error",
564
- 3600,
565
- );
566
- return;
567
- }
568
-
569
- if (
570
- !Number.isFinite(threshold) ||
571
- threshold < minThreshold ||
572
- threshold > maxThreshold
573
- ) {
574
- setActionNotice(
575
- `Auto top-up threshold must be between $${minThreshold} and $${maxThreshold}.`,
576
- "error",
577
- 3600,
578
- );
579
- return;
580
- }
581
-
582
- if (autoTopUpEnabled && !hasPaymentMethod) {
583
- setActionNotice(
584
- "Save a payment method through card checkout before enabling auto top-up.",
585
- "info",
586
- 4200,
587
- );
588
- return;
589
- }
590
-
591
- setBillingSettingsBusy(true);
592
- try {
593
- const response = await client.updateCloudBillingSettings({
594
- autoTopUp: {
595
- enabled: autoTopUpEnabled,
596
- amount,
597
- threshold,
598
- },
599
- });
600
- if (!mountedRef.current) return;
601
- const normalizedSettings = normalizeBillingSettings(response);
602
- setBillingSettings(normalizedSettings);
603
- dispatchAutoTopUpForm({
604
- type: "hydrate",
605
- next: buildAutoTopUpFormState(billingSummary, normalizedSettings),
606
- force: true,
607
- });
608
- await fetchBillingData();
609
- setActionNotice("Billing settings updated.", "success", 3200);
610
- } catch (err) {
611
- setActionNotice(
612
- err instanceof Error
613
- ? err.message
614
- : "Failed to update billing settings.",
615
- "error",
616
- 4200,
617
- );
618
- } finally {
619
- if (mountedRef.current) {
620
- setBillingSettingsBusy(false);
621
- }
622
- }
623
- }, [
624
- autoTopUpAmount,
625
- autoTopUpEnabled,
626
- autoTopUpThreshold,
627
- billingSettings,
628
- billingSummary,
629
- fetchBillingData,
630
- setActionNotice,
631
- ]);
632
-
633
- const handleStartCheckout = useCallback(async () => {
634
- const minimumTopUp =
635
- readNumber(
636
- (billingSummary as Record<string, unknown> | null)?.minimumTopUp,
637
- ) ?? 1;
638
- const amountUsd = Number(billingAmount);
639
- if (!Number.isFinite(amountUsd) || amountUsd < minimumTopUp) {
640
- setActionNotice(
641
- `Enter a top-up amount of at least $${minimumTopUp}.`,
642
- "error",
643
- 3200,
644
- );
645
- return;
646
- }
647
-
648
- setCheckoutBusy(true);
649
- try {
650
- const response = await client.createCloudBillingCheckout({
651
- amountUsd,
652
- mode: billingSummary?.embeddedCheckoutEnabled ? "embedded" : "hosted",
653
- });
654
-
655
- const clientSecret = readString(response.clientSecret);
656
- const publishableKey = readString(response.publishableKey);
657
- if (clientSecret && publishableKey) {
658
- setCheckoutSession(response);
659
- setCheckoutDialogOpen(true);
660
- return;
661
- }
662
-
663
- const checkoutUrl = resolveCheckoutUrl(response);
664
- if (checkoutUrl) {
665
- await openExternalUrl(checkoutUrl);
666
- return;
667
- }
668
-
669
- throw new Error(
670
- readString(response.message) ??
671
- "Eliza Cloud did not return a checkout session.",
672
- );
673
- } catch (err) {
674
- setActionNotice(
675
- err instanceof Error ? err.message : "Failed to start checkout.",
676
- "error",
677
- 4200,
678
- );
679
- } finally {
680
- setCheckoutBusy(false);
681
- }
682
- }, [billingAmount, billingSummary, setActionNotice]);
683
-
684
- const handleCreateCryptoQuote = useCallback(async () => {
685
- const minimumTopUp =
686
- readNumber(
687
- (billingSummary as Record<string, unknown> | null)?.minimumTopUp,
688
- ) ?? 1;
689
- const amountUsd = Number(billingAmount);
690
- if (!Number.isFinite(amountUsd) || amountUsd < minimumTopUp) {
691
- setActionNotice(
692
- `Enter a top-up amount of at least $${minimumTopUp}.`,
693
- "error",
694
- 3200,
695
- );
696
- return;
697
- }
698
-
699
- setCryptoBusy(true);
700
- setCryptoPayResult(null);
701
- try {
702
- const response = await client.createCloudBillingCryptoQuote({
703
- amountUsd,
704
- walletAddress:
705
- walletAddresses?.evmAddress ??
706
- walletAddresses?.solanaAddress ??
707
- undefined,
708
- });
709
- setCryptoQuote(response as Record<string, unknown>);
710
- } catch (err) {
711
- setCryptoQuote(null);
712
- setActionNotice(
713
- err instanceof Error ? err.message : "Failed to request crypto quote.",
714
- "error",
715
- 4200,
716
- );
717
- } finally {
718
- setCryptoBusy(false);
719
- }
720
- }, [billingAmount, billingSummary, setActionNotice, walletAddresses]);
721
-
722
- const handlePayCryptoFromAgentWallet = useCallback(async () => {
723
- if (!cryptoQuote) return;
724
-
725
- const network = readString(cryptoQuote.network)?.toLowerCase();
726
- const payToAddress =
727
- readString(cryptoQuote.payToAddress) ??
728
- readString((cryptoQuote as Record<string, unknown>).address);
729
- const amount = readString(cryptoQuote.amount);
730
- const currency = readString(cryptoQuote.currency) ?? "USDC";
731
- const tokenAddress = readString(cryptoQuote.tokenAddress);
732
-
733
- if (!network || network !== "bsc") {
734
- setActionNotice(
735
- "Agent-wallet payment is currently wired for BSC quotes only.",
736
- "info",
737
- 4200,
738
- );
739
- return;
740
- }
741
-
742
- if (!payToAddress || !amount) {
743
- setActionNotice(
744
- "Crypto quote is missing transfer details.",
745
- "error",
746
- 4200,
747
- );
748
- return;
749
- }
750
-
751
- setCryptoPayBusy(true);
752
- try {
753
- const result = await client.executeBscTransfer({
754
- toAddress: payToAddress,
755
- amount,
756
- assetSymbol: currency,
757
- tokenAddress: tokenAddress ?? undefined,
758
- confirm: true,
759
- });
760
-
761
- if (result.executed && result.execution?.hash) {
762
- setCryptoPayResult(
763
- `Submitted ${currency} payment: ${result.execution.hash}`,
764
- );
765
- setActionNotice(
766
- "Crypto payment submitted from the agent wallet.",
767
- "success",
768
- );
769
- } else if (result.requiresUserSignature) {
770
- setCryptoPayResult(
771
- "Cloud returned an unsigned payment request. Sign it from the wallet flow to complete payment.",
772
- );
773
- setActionNotice(
774
- "This wallet requires user-sign mode for crypto payment.",
775
- "info",
776
- 4200,
777
- );
778
- }
779
- } catch (err) {
780
- setCryptoPayResult(null);
781
- setActionNotice(
782
- err instanceof Error ? err.message : "Crypto payment failed.",
783
- "error",
784
- 4200,
785
- );
786
- } finally {
787
- setCryptoPayBusy(false);
788
- }
789
- }, [cryptoQuote, setActionNotice]);
790
-
791
- useEffect(() => {
792
- mountedRef.current = true;
793
- return () => {
794
- mountedRef.current = false;
795
- };
796
- }, []);
797
-
798
- useEffect(() => {
799
- if (elizaCloudConnected) {
800
- void loadDropStatus();
801
- void fetchCloudAgents();
802
- void fetchBillingData();
803
- }
804
- }, [fetchBillingData, fetchCloudAgents, loadDropStatus, elizaCloudConnected]);
805
-
806
- const summaryCritical =
807
- billingSummary?.critical ?? elizaCloudCreditsCritical ?? false;
808
- const summaryLow = billingSummary?.low ?? elizaCloudCreditsLow ?? false;
809
- const creditStatusColor = summaryCritical
810
- ? "text-danger"
811
- : summaryLow
812
- ? "text-warn"
813
- : "text-ok";
814
- const activeView = cloudDashboardView;
815
- const cloudBalance = billingSummary?.balance ?? elizaCloudCredits ?? 0;
816
- const cloudCurrency = billingSummary?.currency ?? "USD";
817
- const fallbackBillingUrl =
818
- billingSummary?.topUpUrl ?? elizaCloudTopUpUrl ?? null;
819
- const minimumTopUp =
820
- readNumber(
821
- (billingSummary as Record<string, unknown> | null)?.minimumTopUp,
822
- ) ?? 1;
823
- const billingAutoTopUp = getBillingAutoTopUp(billingSettings);
824
- const billingLimits = getBillingLimits(billingSettings);
825
- const autoTopUpHasPaymentMethod =
826
- readBoolean(billingAutoTopUp.hasPaymentMethod) ??
827
- readBoolean(
828
- (billingSummary as Record<string, unknown> | null)?.hasPaymentMethod,
829
- ) ??
830
- false;
831
- const autoTopUpMinAmount =
832
- readNumber(billingLimits.minAmount) ?? minimumTopUp;
833
- const autoTopUpMaxAmount = readNumber(billingLimits.maxAmount) ?? 1000;
834
- const autoTopUpMinThreshold = readNumber(billingLimits.minThreshold) ?? 0;
835
- const autoTopUpMaxThreshold = readNumber(billingLimits.maxThreshold) ?? 1000;
836
- const creditStatusTone = summaryCritical
837
- ? t("elizaclouddashboard.CreditsCritical")
838
- : summaryLow
839
- ? t("elizaclouddashboard.CreditsLow")
840
- : t("elizaclouddashboard.CreditsHealthy");
841
- const hasAgentWallet = Boolean(
842
- walletAddresses?.evmAddress || walletAddresses?.solanaAddress,
843
- );
844
- const hasWalletFunds = Boolean(
845
- walletBalances?.evm?.chains.some(
846
- (chain) =>
847
- Number(chain.nativeBalance) > 0 ||
848
- chain.tokens.some((token) => Number(token.balance) > 0),
849
- ) ||
850
- ((walletBalances?.solana &&
851
- (Number(walletBalances.solana.solBalance) > 0 ||
852
- walletBalances.solana.tokens.some(
853
- (token) => Number(token.balance) > 0,
854
- ))) ??
855
- false),
856
- );
857
-
858
- if (!elizaCloudConnected) {
859
- return (
860
- <div className="flex flex-col items-center justify-center max-w-md mx-auto px-4 py-8 text-center animate-in fade-in slide-in-from-bottom-4 duration-700">
861
- <div className="w-12 h-12 rounded-2xl bg-accent/10 flex items-center justify-center mb-5 border border-accent/20">
862
- <Zap className="w-6 h-6 text-txt" />
863
- </div>
864
- <p className="text-sm text-muted mb-6 leading-relaxed">
865
- {t("elizaclouddashboard.ScaleYourAgents")}
866
- </p>
867
- <Button
868
- variant="default"
869
- size="sm"
870
- className="rounded-xl px-8 py-3 text-sm font-semibold shadow-md shadow-accent/15 hover:shadow-accent/30 hover:-translate-y-0.5 transition-all duration-300"
871
- onClick={handleCloudLogin}
872
- disabled={elizaCloudLoginBusy}
873
- >
874
- {elizaCloudLoginBusy ? (
875
- <RefreshCw className="w-4 h-4 mr-2 animate-spin" />
876
- ) : (
877
- <Zap className="w-4 h-4 mr-2" />
878
- )}
879
- {elizaCloudLoginBusy
880
- ? t("elizaclouddashboard.Connecting")
881
- : t("elizaclouddashboard.ConnectElizaCloud")}
882
- </Button>
883
- <p className="mt-4 text-xs text-muted/60">
884
- {t("elizaclouddashboard.NewToElizaCloud")}{" "}
885
- <a
886
- href={ELIZA_CLOUD_LOGIN_URL}
887
- target="_blank"
888
- rel="noopener noreferrer"
889
- className="text-txt underline hover:text-txt-hover transition-colors"
890
- >
891
- {t("elizaclouddashboard.LearnMore")}
892
- </a>
893
- </p>
894
- </div>
895
- );
896
- }
897
-
898
- return (
899
- <div className="custom-scrollbar p-6 lg:p-10 space-y-10 max-w-7xl mx-auto animate-in fade-in duration-500">
900
- <div className="flex flex-col md:flex-row md:items-end justify-between gap-6">
901
- <div>
902
- <div className="flex items-center gap-4 mb-3">
903
- <div className="flex h-12 w-12 shrink-0 items-center justify-center rounded-xl bg-accent p-2.5 shadow-lg shadow-accent/20">
904
- <LayoutDashboard className="h-5 w-5 shrink-0 text-accent-fg" />
905
- </div>
906
- <h1 className="text-3xl font-bold text-txt-strong tracking-tight">
907
- {t("elizaclouddashboard.CloudDashboard")}
908
- </h1>
909
- </div>
910
- <p className="text-muted mt-1">
911
- {t("elizaclouddashboard.ManageInstance")}
912
- </p>
913
- </div>
914
-
915
- <div className="flex items-center gap-3">
916
- <div className="inline-flex items-center gap-1 rounded-2xl border border-border/50 bg-bg/50 p-1">
917
- <button
918
- type="button"
919
- className={`inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm font-medium transition-colors ${
920
- activeView === "billing"
921
- ? "bg-accent text-accent-fg"
922
- : "text-muted hover:text-txt"
923
- }`}
924
- onClick={() => setState("cloudDashboardView", "billing")}
925
- >
926
- <CircleDollarSign className="w-4 h-4" />
927
- {t("elizaclouddashboard.CloudBilling")}
928
- </button>
929
- <button
930
- type="button"
931
- className={`inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm font-medium transition-colors ${
932
- activeView === "agents"
933
- ? "bg-accent text-accent-fg"
934
- : "text-muted hover:text-txt"
935
- }`}
936
- onClick={() => setState("cloudDashboardView", "agents")}
937
- >
938
- <Server className="w-4 h-4" />
939
- {t("elizaclouddashboard.CloudAgents")}
940
- </button>
941
- </div>
942
- <Button
943
- variant="outline"
944
- size="sm"
945
- className="rounded-xl border-border/50 bg-bg/50 backdrop-blur-sm"
946
- onClick={handleRefresh}
947
- disabled={refreshing}
948
- >
949
- <RefreshCw
950
- className={`w-4 h-4 mr-2 ${refreshing ? "animate-spin" : ""}`}
951
- />
952
- {t("elizaclouddashboard.Refresh")}
953
- </Button>
954
- <Button
955
- variant="outline"
956
- size="sm"
957
- className="rounded-xl border-danger/30 text-danger hover:bg-danger/10"
958
- onClick={handleCloudDisconnect}
959
- disabled={cloudDisconnecting}
960
- >
961
- {cloudDisconnecting
962
- ? t("elizaclouddashboard.Disconnecting")
963
- : t("elizaclouddashboard.Disconnect")}
964
- </Button>
965
- </div>
966
- </div>
967
-
968
- {activeView === "billing" ? (
969
- <div className="grid grid-cols-1 xl:grid-cols-[minmax(0,1.8fr)_minmax(320px,1fr)] gap-8">
970
- <div className="space-y-8">
971
- <SectionCard
972
- title={t("elizaclouddashboard.CloudBilling")}
973
- description={t("elizaclouddashboard.CloudBillingDesc")}
974
- className="border-border/50 bg-bg/40 backdrop-blur-xl rounded-3xl shadow-sm"
975
- >
976
- {billingError && (
977
- <div className="mt-4 rounded-2xl border border-danger/30 bg-danger/10 px-4 py-3 text-sm text-danger">
978
- {billingError}
979
- </div>
980
- )}
981
-
982
- <div className="mt-4 grid grid-cols-1 gap-4 xl:grid-cols-[minmax(0,1.1fr)_minmax(320px,0.9fr)]">
983
- <div className="rounded-[28px] border border-accent/20 bg-[linear-gradient(160deg,rgba(var(--accent),0.16),rgba(255,255,255,0.02))] p-5 sm:p-6">
984
- <div className="flex items-start justify-between gap-4">
985
- <div>
986
- <div className="text-[11px] uppercase tracking-[0.18em] text-muted">
987
- {t("elizaclouddashboard.AvailableBalance")}
988
- </div>
989
- <div
990
- className={`mt-3 text-4xl font-bold tracking-tight sm:text-5xl ${creditStatusColor}`}
991
- >
992
- {cloudCurrency === "USD" ? "$" : `${cloudCurrency} `}
993
- {cloudBalance.toFixed(2)}
994
- </div>
995
- <div className="mt-3 text-sm text-muted">
996
- {t("elizaclouddashboard.InAppBillingReady")}
997
- </div>
998
- </div>
999
- <div className="flex items-center gap-2">
1000
- {billingLoading ? (
1001
- <Loader2 className="h-4 w-4 animate-spin text-muted" />
1002
- ) : null}
1003
- <span
1004
- className={`rounded-full border px-3 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] ${
1005
- summaryCritical
1006
- ? "border-danger/30 bg-danger/10 text-danger"
1007
- : summaryLow
1008
- ? "border-warn/30 bg-warn/10 text-warn"
1009
- : "border-ok/30 bg-ok/10 text-ok"
1010
- }`}
1011
- >
1012
- {creditStatusTone}
1013
- </span>
1014
- </div>
1015
- </div>
1016
-
1017
- <div className="mt-6 grid grid-cols-1 gap-3 sm:grid-cols-2">
1018
- <div className="rounded-2xl border border-border/40 bg-bg/30 px-4 py-3">
1019
- <div className="text-[11px] uppercase tracking-[0.18em] text-muted">
1020
- {t("elizaclouddashboard.TopUpCredits")}
1021
- </div>
1022
- <div className="mt-2 text-sm text-txt-strong">
1023
- {t("elizaclouddashboard.MinimumTopUp", {
1024
- amount: minimumTopUp.toFixed(2),
1025
- })}
1026
- </div>
1027
- </div>
1028
- <div className="rounded-2xl border border-border/40 bg-bg/30 px-4 py-3">
1029
- <div className="text-[11px] uppercase tracking-[0.18em] text-muted">
1030
- {t("elizaclouddashboard.AutoTopUp")}
1031
- </div>
1032
- <div className="mt-2 text-sm text-txt-strong">
1033
- {autoTopUpEnabled
1034
- ? t("elizaclouddashboard.Enabled")
1035
- : t("elizaclouddashboard.Disabled")}
1036
- </div>
1037
- </div>
1038
- </div>
1039
- </div>
1040
-
1041
- <div className="rounded-[28px] border border-border/50 bg-bg/25 p-5 sm:p-6">
1042
- <div className="flex items-start justify-between gap-4">
1043
- <div>
1044
- <div className="text-sm font-semibold text-txt-strong">
1045
- {t("elizaclouddashboard.AutoTopUp")}
1046
- </div>
1047
- <div className="mt-1 text-sm text-muted">
1048
- {t("elizaclouddashboard.AutoTopUpDesc")}
1049
- </div>
1050
- </div>
1051
- <button
1052
- type="button"
1053
- onClick={() =>
1054
- dispatchAutoTopUpForm({
1055
- type: "setEnabled",
1056
- value: !autoTopUpEnabled,
1057
- })
1058
- }
1059
- className={`relative inline-flex h-7 w-12 items-center rounded-full border transition-colors ${
1060
- autoTopUpEnabled
1061
- ? "border-accent bg-accent"
1062
- : "border-border/60 bg-bg/50"
1063
- }`}
1064
- aria-label={t("elizaclouddashboard.ToggleAutoTopUp")}
1065
- >
1066
- <span
1067
- className={`inline-block h-5 w-5 rounded-full bg-white transition-transform ${
1068
- autoTopUpEnabled ? "translate-x-6" : "translate-x-1"
1069
- }`}
1070
- />
1071
- </button>
1072
- </div>
1073
-
1074
- <div className="mt-4 rounded-2xl border border-border/40 bg-bg/20 px-4 py-3 text-sm text-muted">
1075
- {autoTopUpHasPaymentMethod
1076
- ? t("elizaclouddashboard.AutoTopUpPaymentReady")
1077
- : t("elizaclouddashboard.AutoTopUpNeedsPaymentMethod")}
1078
- </div>
1079
-
1080
- <div className="mt-4 grid grid-cols-1 gap-3 sm:grid-cols-2">
1081
- <div className="space-y-2">
1082
- <label
1083
- htmlFor="cloud-auto-topup-threshold"
1084
- className="text-xs font-medium text-muted"
1085
- >
1086
- {t("elizaclouddashboard.AutoTopUpThreshold")}
1087
- </label>
1088
- <Input
1089
- id="cloud-auto-topup-threshold"
1090
- type="number"
1091
- min={String(autoTopUpMinThreshold)}
1092
- max={String(autoTopUpMaxThreshold)}
1093
- step="1"
1094
- value={autoTopUpThreshold}
1095
- onChange={(event) =>
1096
- dispatchAutoTopUpForm({
1097
- type: "setThreshold",
1098
- value: event.target.value,
1099
- })
1100
- }
1101
- className="rounded-xl bg-bg"
1102
- />
1103
- </div>
1104
- <div className="space-y-2">
1105
- <label
1106
- htmlFor="cloud-auto-topup-amount"
1107
- className="text-xs font-medium text-muted"
1108
- >
1109
- {t("elizaclouddashboard.AutoTopUpAmount")}
1110
- </label>
1111
- <Input
1112
- id="cloud-auto-topup-amount"
1113
- type="number"
1114
- min={String(autoTopUpMinAmount)}
1115
- max={String(autoTopUpMaxAmount)}
1116
- step="1"
1117
- value={autoTopUpAmount}
1118
- onChange={(event) =>
1119
- dispatchAutoTopUpForm({
1120
- type: "setAmount",
1121
- value: event.target.value,
1122
- })
1123
- }
1124
- className="rounded-xl bg-bg"
1125
- />
1126
- </div>
1127
- </div>
1128
-
1129
- <div className="mt-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
1130
- <div className="text-xs text-muted">
1131
- {t("elizaclouddashboard.AutoTopUpLimits", {
1132
- minAmount: autoTopUpMinAmount,
1133
- maxAmount: autoTopUpMaxAmount,
1134
- minThreshold: autoTopUpMinThreshold,
1135
- maxThreshold: autoTopUpMaxThreshold,
1136
- })}
1137
- </div>
1138
- <Button
1139
- variant="outline"
1140
- className="rounded-2xl border-border/50"
1141
- disabled={
1142
- billingSettingsBusy ||
1143
- billingLoading ||
1144
- !autoTopUpForm.dirty
1145
- }
1146
- onClick={() => void handleSaveBillingSettings()}
1147
- >
1148
- {billingSettingsBusy ? (
1149
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
1150
- ) : null}
1151
- {t("elizaclouddashboard.SaveBillingSettings")}
1152
- </Button>
1153
- </div>
1154
- </div>
1155
- </div>
1156
-
1157
- <div className="mt-6 rounded-[28px] border border-border/50 bg-bg/25 p-5 sm:p-6">
1158
- <div className="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
1159
- <div>
1160
- <div className="text-sm font-semibold text-txt-strong">
1161
- {t("elizaclouddashboard.TopUpCredits")}
1162
- </div>
1163
- <div className="mt-1 text-sm text-muted">
1164
- {t("elizaclouddashboard.TopUpCreditsDesc")}
1165
- </div>
1166
- </div>
1167
-
1168
- {fallbackBillingUrl ? (
1169
- <Button
1170
- variant="ghost"
1171
- className="justify-start rounded-2xl px-0 text-sm text-muted hover:text-txt"
1172
- onClick={() => void openExternalUrl(fallbackBillingUrl)}
1173
- >
1174
- <ExternalLink className="mr-2 h-4 w-4" />
1175
- {t("elizaclouddashboard.OpenBrowserBilling")}
1176
- </Button>
1177
- ) : null}
1178
- </div>
1179
-
1180
- <div className="mt-5 grid grid-cols-1 gap-4 lg:grid-cols-[minmax(0,1fr)_minmax(260px,0.8fr)]">
1181
- <div className="space-y-3">
1182
- <div className="flex flex-wrap gap-2">
1183
- {BILLING_PRESET_AMOUNTS.map((amount) => (
1184
- <button
1185
- key={amount}
1186
- type="button"
1187
- className={`rounded-xl border px-3 py-2 text-sm font-medium transition-colors ${
1188
- billingAmount === String(amount)
1189
- ? "border-accent bg-accent text-accent-fg"
1190
- : "border-border/50 bg-bg/30 text-txt hover:border-accent/40"
1191
- }`}
1192
- onClick={() => setBillingAmount(String(amount))}
1193
- >
1194
- ${amount}
1195
- </button>
1196
- ))}
1197
- </div>
1198
-
1199
- <div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
1200
- <div className="space-y-2">
1201
- <label
1202
- htmlFor="cloud-billing-amount"
1203
- className="text-xs font-medium text-muted"
1204
- >
1205
- {t("elizaclouddashboard.CustomAmount")}
1206
- </label>
1207
- <Input
1208
- id="cloud-billing-amount"
1209
- type="number"
1210
- min={String(minimumTopUp)}
1211
- step="1"
1212
- value={billingAmount}
1213
- onChange={(event) =>
1214
- setBillingAmount(event.target.value)
1215
- }
1216
- className="rounded-xl bg-bg"
1217
- />
1218
- </div>
1219
- <div className="rounded-2xl border border-border/40 bg-bg/20 px-4 py-3 text-sm text-muted">
1220
- {t("elizaclouddashboard.MinimumTopUp", {
1221
- amount: minimumTopUp.toFixed(2),
1222
- })}
1223
- </div>
1224
- </div>
1225
- </div>
1226
-
1227
- <div className="flex flex-col gap-3">
1228
- <Button
1229
- variant="default"
1230
- className="h-12 rounded-2xl font-semibold"
1231
- disabled={checkoutBusy || billingLoading}
1232
- onClick={() => void handleStartCheckout()}
1233
- >
1234
- {checkoutBusy ? (
1235
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
1236
- ) : (
1237
- <CreditCard className="mr-2 h-4 w-4" />
1238
- )}
1239
- {t("elizaclouddashboard.PayWithCard")}
1240
- </Button>
1241
- <Button
1242
- variant="outline"
1243
- className="h-12 rounded-2xl border-border/50"
1244
- disabled={cryptoBusy || billingLoading}
1245
- onClick={() => void handleCreateCryptoQuote()}
1246
- >
1247
- {cryptoBusy ? (
1248
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
1249
- ) : (
1250
- <Wallet className="mr-2 h-4 w-4" />
1251
- )}
1252
- {t("elizaclouddashboard.PayWithCrypto")}
1253
- </Button>
1254
- <div className="rounded-2xl border border-border/40 bg-bg/20 px-4 py-3 text-xs text-muted">
1255
- {t("elizaclouddashboard.CheckoutProviderNote")}
1256
- </div>
1257
- </div>
1258
- </div>
1259
- </div>
1260
- </SectionCard>
1261
- </div>
1262
-
1263
- <div className="space-y-8">
1264
- <SectionCard
1265
- title={t("elizaclouddashboard.CryptoTopUp")}
1266
- description={t("elizaclouddashboard.CryptoTopUpDesc")}
1267
- className="border-border/50 bg-bg/40 backdrop-blur-xl rounded-3xl shadow-sm"
1268
- >
1269
- <div className="mt-2 space-y-4">
1270
- <div className="rounded-2xl border border-border/40 bg-bg/25 px-4 py-3 text-sm text-muted">
1271
- {hasAgentWallet
1272
- ? hasWalletFunds
1273
- ? t("elizaclouddashboard.AgentWalletFunded")
1274
- : t("elizaclouddashboard.AgentWalletDetected")
1275
- : t("elizaclouddashboard.NoAgentWalletDetected")}
1276
- </div>
1277
-
1278
- {cryptoQuote ? (
1279
- <div className="rounded-2xl border border-border/40 bg-bg/25 p-4">
1280
- <div className="space-y-2 text-sm">
1281
- <div className="font-semibold text-txt-strong">
1282
- {readString(cryptoQuote.provider) ??
1283
- t("elizaclouddashboard.CryptoQuoteReady")}
1284
- </div>
1285
- <div className="text-muted">
1286
- {readString(cryptoQuote.currency) ?? "USDC"}{" "}
1287
- {readString(cryptoQuote.amount) ?? "0"} on{" "}
1288
- {readString(cryptoQuote.network) ?? "selected network"}
1289
- </div>
1290
- {readString(cryptoQuote.payToAddress) && (
1291
- <code className="block rounded-xl border border-border/40 bg-bg/30 px-3 py-2 text-xs text-txt-strong break-all">
1292
- {readString(cryptoQuote.payToAddress)}
1293
- </code>
1294
- )}
1295
- {readString(cryptoQuote.expiresAt) && (
1296
- <div className="text-xs text-muted">
1297
- Expires{" "}
1298
- {new Date(
1299
- readString(cryptoQuote.expiresAt) ?? "",
1300
- ).toLocaleString()}
1301
- </div>
1302
- )}
1303
- </div>
1304
-
1305
- <div className="mt-4 flex flex-col gap-3">
1306
- {readString(cryptoQuote.paymentLinkUrl) ? (
1307
- <Button
1308
- variant="outline"
1309
- className="rounded-2xl"
1310
- onClick={() =>
1311
- void openExternalUrl(
1312
- readString(cryptoQuote.paymentLinkUrl) ?? "",
1313
- )
1314
- }
1315
- >
1316
- <ExternalLink className="mr-2 h-4 w-4" />
1317
- {t("elizaclouddashboard.OpenHostedCryptoCheckout")}
1318
- </Button>
1319
- ) : null}
1320
-
1321
- <Button
1322
- variant="default"
1323
- className="rounded-2xl"
1324
- disabled={
1325
- cryptoPayBusy ||
1326
- !hasAgentWallet ||
1327
- !hasWalletFunds ||
1328
- readString(cryptoQuote.network)?.toLowerCase() !==
1329
- "bsc" ||
1330
- !readString(cryptoQuote.payToAddress) ||
1331
- !readString(cryptoQuote.amount)
1332
- }
1333
- onClick={() => void handlePayCryptoFromAgentWallet()}
1334
- >
1335
- {cryptoPayBusy ? (
1336
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
1337
- ) : (
1338
- <Wallet className="mr-2 h-4 w-4" />
1339
- )}
1340
- {t("elizaclouddashboard.PayFromAgentWallet")}
1341
- </Button>
1342
- </div>
1343
- </div>
1344
- ) : (
1345
- <div className="rounded-2xl border border-dashed border-border/50 bg-bg/20 px-4 py-5 text-sm text-muted">
1346
- {t("elizaclouddashboard.CryptoQuoteHint")}
1347
- </div>
1348
- )}
1349
-
1350
- {cryptoPayResult && (
1351
- <div className="rounded-2xl border border-ok/30 bg-ok/10 px-4 py-3 text-sm text-ok">
1352
- {cryptoPayResult}
1353
- </div>
1354
- )}
1355
- </div>
1356
- </SectionCard>
1357
-
1358
- <SectionCard
1359
- title={t("elizaclouddashboard.AccountDetails")}
1360
- className="border-border/50 bg-bg/40 backdrop-blur-xl rounded-3xl shadow-sm"
1361
- >
1362
- <div className="space-y-5 mt-4">
1363
- <div className="p-4 rounded-2xl bg-bg/30 border border-border/30">
1364
- <span className="text-[10px] text-muted uppercase font-bold tracking-wider mb-2 block">
1365
- {t("elizaclouddashboard.CloudUserID")}
1366
- </span>
1367
- <code className="text-xs text-txt-strong break-all font-mono">
1368
- {elizaCloudUserId || t("elizaclouddashboard.NotAvailable")}
1369
- </code>
1370
- </div>
1371
-
1372
- <div className="flex items-center justify-between p-4">
1373
- <div className="flex items-center gap-2">
1374
- <Shield className="w-4 h-4 text-ok" />
1375
- <span className="text-xs font-medium">
1376
- {t("elizaclouddashboard.SecurityStatus")}
1377
- </span>
1378
- </div>
1379
- <span className="text-[10px] px-2 py-0.5 rounded-full bg-ok/10 text-ok font-bold uppercase tracking-wider border border-ok/20">
1380
- {t("elizaclouddashboard.Secure")}
1381
- </span>
1382
- </div>
1383
-
1384
- <Button
1385
- variant="link"
1386
- className="settings-compact-button w-full text-xs text-txt justify-start px-3 h-auto"
1387
- onClick={() =>
1388
- void openExternalUrl(ELIZA_CLOUD_INSTANCES_URL)
1389
- }
1390
- >
1391
- {t("elizaclouddashboard.AdvancedDashboard")}
1392
- <ExternalLink className="w-3 h-3 ml-2" />
1393
- </Button>
1394
- </div>
1395
- </SectionCard>
1396
- </div>
1397
- </div>
1398
- ) : (
1399
- <div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
1400
- <div className="lg:col-span-2 space-y-8">
1401
- <SectionCard
1402
- title={t("elizaclouddashboard.CloudAgents")}
1403
- description={t("elizaclouddashboard.CloudAgentsDesc")}
1404
- className="border-border/50 bg-bg/40 backdrop-blur-xl rounded-3xl overflow-hidden shadow-sm"
1405
- >
1406
- {agentsError && (
1407
- <div className="mt-6 flex items-center gap-3 text-sm text-danger bg-danger/10 rounded-xl p-4 border border-danger/20">
1408
- <AlertCircle className="w-4 h-4 shrink-0" />
1409
- {agentsError}
1410
- </div>
1411
- )}
1412
-
1413
- <div className="grid grid-cols-1 sm:grid-cols-2 gap-6 mt-6">
1414
- {agentsLoading && cloudAgents.length === 0 ? (
1415
- <div className="col-span-full flex items-center justify-center py-12">
1416
- <Loader2 className="w-6 h-6 text-txt animate-spin" />
1417
- </div>
1418
- ) : (
1419
- <>
1420
- {cloudAgents.map((agent) => (
1421
- <CloudAgentCard
1422
- key={agent.agent_id}
1423
- agent={agent}
1424
- onDelete={handleDeleteAgent}
1425
- deleting={deletingAgentId === agent.agent_id}
1426
- launching={launchingAgentId === agent.agent_id}
1427
- onLaunch={handleLaunchAgent}
1428
- onSelect={(id) => setSelectedAgentId(id)}
1429
- />
1430
- ))}
1431
- {showDeployForm ? (
1432
- <div className="aspect-[4/3] rounded-2xl border border-border/50 bg-bg/30 p-8 flex flex-col items-center justify-center text-center">
1433
- <div className="w-full space-y-3">
1434
- <input
1435
- placeholder={t("elizaclouddashboard.AgentName")}
1436
- value={deployAgentName}
1437
- onChange={(e) => setDeployAgentName(e.target.value)}
1438
- onKeyDown={(e) => {
1439
- if (e.key === "Enter") void handleDeployAgent();
1440
- if (e.key === "Escape") setShowDeployForm(false);
1441
- }}
1442
- disabled={deploying}
1443
- className="w-full h-8 px-3 rounded-xl bg-bg/50 border border-border/40 text-xs text-center focus:outline-none focus:border-accent"
1444
- />
1445
- <div className="flex gap-2">
1446
- <Button
1447
- variant="ghost"
1448
- size="sm"
1449
- className="flex-1 rounded-xl h-8 text-xs text-muted hover:text-txt-strong flex items-center justify-center p-0"
1450
- onClick={() => setShowDeployForm(false)}
1451
- disabled={deploying}
1452
- >
1453
- {t("onboarding.cancel")}
1454
- </Button>
1455
- <Button
1456
- variant="default"
1457
- size="sm"
1458
- className="flex-1 rounded-xl h-8 text-xs font-bold"
1459
- onClick={handleDeployAgent}
1460
- disabled={deploying || !deployAgentName.trim()}
1461
- >
1462
- {deploying ? (
1463
- <Loader2 className="w-3 h-3 animate-spin mx-auto" />
1464
- ) : (
1465
- t("elizaclouddashboard.Deploy")
1466
- )}
1467
- </Button>
1468
- </div>
1469
- </div>
1470
- </div>
1471
- ) : (
1472
- <button
1473
- type="button"
1474
- className="aspect-[4/3] rounded-2xl border border-dashed border-border/60 flex flex-col items-center justify-center p-8 lg:p-12 text-center group hover:border-accent/50 hover:bg-accent/5 transition-all duration-300 cursor-pointer"
1475
- onClick={() => setShowDeployForm(true)}
1476
- >
1477
- <div className="w-12 h-12 lg:w-10 lg:h-10 rounded-full bg-bg-accent flex items-center justify-center mb-5 lg:mb-6 group-hover:scale-110 transition-transform">
1478
- <Plus className="w-6 h-6 lg:w-5 lg:h-5 text-muted group-hover:text-txt" />
1479
- </div>
1480
- <h3 className="font-bold text-txt-strong mb-2">
1481
- {t("elizaclouddashboard.DeployNewAgent")}
1482
- </h3>
1483
- <p className="text-xs text-muted max-w-[16rem]">
1484
- {t("elizaclouddashboard.InitializeInstance")}
1485
- </p>
1486
- </button>
1487
- )}
1488
- </>
1489
- )}
1490
- </div>
1491
- </SectionCard>
1492
-
1493
- <SectionCard
1494
- title={t("elizaclouddashboard.UsageMetrics")}
1495
- description={t("elizaclouddashboard.UsageMetricsDesc")}
1496
- className="border-border/50 bg-bg/40 backdrop-blur-xl rounded-3xl shadow-sm"
1497
- >
1498
- <div className="h-48 flex items-center justify-center text-muted italic text-sm border border-border/30 rounded-2xl bg-bg/20 mt-6 p-6">
1499
- {t("elizaclouddashboard.MetricsPlaceholder")}
1500
- </div>
1501
- </SectionCard>
1502
- </div>
1503
-
1504
- <div className="space-y-8">
1505
- {selectedAgentId && selectedAgent ? (
1506
- <AgentDetailSidebar
1507
- agent={selectedAgent}
1508
- onClose={() => setSelectedAgentId(null)}
1509
- />
1510
- ) : (
1511
- <SectionCard
1512
- title={t("elizaclouddashboard.AccountDetails")}
1513
- className="border-border/50 bg-bg/40 backdrop-blur-xl rounded-3xl shadow-sm"
1514
- >
1515
- <div className="space-y-5 mt-4">
1516
- <div className="p-4 rounded-2xl bg-bg/30 border border-border/30">
1517
- <span className="text-[10px] text-muted uppercase font-bold tracking-wider mb-2 block">
1518
- {t("elizaclouddashboard.CloudUserID")}
1519
- </span>
1520
- <code className="text-xs text-txt-strong break-all font-mono">
1521
- {elizaCloudUserId ||
1522
- t("elizaclouddashboard.NotAvailable")}
1523
- </code>
1524
- </div>
1525
-
1526
- <div className="rounded-2xl border border-accent/20 bg-accent/8 p-5">
1527
- <div className="text-[11px] uppercase tracking-[0.18em] text-muted">
1528
- {t("elizaclouddashboard.AvailableBalance")}
1529
- </div>
1530
- <div
1531
- className={`mt-3 text-3xl font-bold ${creditStatusColor}`}
1532
- >
1533
- ${cloudBalance.toFixed(2)}
1534
- </div>
1535
- <div className="mt-2 text-xs text-muted">
1536
- {creditStatusTone}
1537
- </div>
1538
- </div>
1539
-
1540
- <Button
1541
- variant="outline"
1542
- className="w-full justify-start rounded-2xl border-border/40 bg-bg/30 px-5 py-4 text-sm"
1543
- onClick={() => setState("cloudDashboardView", "billing")}
1544
- >
1545
- <CircleDollarSign className="mr-2 h-4 w-4" />
1546
- {t("elizaclouddashboard.CloudBilling")}
1547
- </Button>
1548
- </div>
1549
- </SectionCard>
1550
- )}
1551
- </div>
1552
- </div>
1553
- )}
1554
-
1555
- <Dialog
1556
- open={checkoutDialogOpen}
1557
- onOpenChange={(open) => {
1558
- setCheckoutDialogOpen(open);
1559
- if (!open) {
1560
- void fetchBillingData();
1561
- }
1562
- }}
1563
- >
1564
- <DialogContent className="max-w-4xl">
1565
- <DialogHeader>
1566
- <DialogTitle>{t("elizaclouddashboard.PayWithCard")}</DialogTitle>
1567
- </DialogHeader>
1568
- {checkoutSession?.clientSecret && checkoutSession.publishableKey ? (
1569
- <StripeEmbeddedCheckout
1570
- publishableKey={checkoutSession.publishableKey}
1571
- clientSecret={checkoutSession.clientSecret}
1572
- />
1573
- ) : (
1574
- <div className="rounded-2xl border border-border/40 bg-bg/25 px-4 py-5 text-sm text-muted">
1575
- {t("elizaclouddashboard.CheckoutProviderNote")}
1576
- </div>
1577
- )}
1578
- </DialogContent>
1579
- </Dialog>
1580
- </div>
1581
- );
1582
- }
1583
-
1584
- interface StatusDetail {
1585
- status?: string;
1586
- databaseStatus?: string;
1587
- lastHeartbeat?: string | number | Date | null;
1588
- }
1589
-
1590
- function AgentDetailSidebar({
1591
- agent,
1592
- onClose,
1593
- }: {
1594
- agent: CloudCompatAgent | undefined;
1595
- onClose: () => void;
1596
- }) {
1597
- const [logs, setLogs] = useState<string>("");
1598
- const [statusDetail, setStatusDetail] = useState<StatusDetail | null>(null);
1599
- const logsEndRef = useRef<HTMLDivElement>(null);
1600
-
1601
- useEffect(() => {
1602
- if (!agent) return;
1603
- let mounted = true;
1604
-
1605
- const fetchDetails = async () => {
1606
- try {
1607
- const [statusRes, logsRes] = await Promise.all([
1608
- client.getCloudCompatAgentStatus(agent.agent_id),
1609
- client.getCloudCompatAgentLogs(agent.agent_id, 100),
1610
- ]);
1611
-
1612
- if (!mounted) return;
1613
- setStatusDetail(statusRes.data);
1614
- setLogs(typeof logsRes.data === "string" ? logsRes.data : "");
1615
- } catch {
1616
- // Silently retry next tick
1617
- }
1618
- };
1619
-
1620
- void fetchDetails();
1621
- const intId = setInterval(fetchDetails, 5000);
1622
- return () => {
1623
- mounted = false;
1624
- clearInterval(intId);
1625
- };
1626
- }, [agent]);
1627
-
1628
- // biome-ignore lint/correctness/useExhaustiveDependencies: rerun when logs update
1629
- useEffect(() => {
1630
- if (logsEndRef.current) {
1631
- logsEndRef.current.scrollIntoView({ behavior: "smooth" });
1632
- }
1633
- }, [logs]);
1634
-
1635
- if (!agent) return null;
1636
-
1637
- return (
1638
- <div className="space-y-4 animate-in slide-in-from-right-8 duration-300">
1639
- <SectionCard
1640
- title="Agent Details"
1641
- className="border-accent/40 bg-accent/5 backdrop-blur-xl rounded-3xl shadow-sm relative overflow-hidden"
1642
- >
1643
- <button
1644
- type="button"
1645
- className="absolute top-4 right-4 p-1 rounded-full hover:bg-bg/50 transition-colors text-muted hover:text-txt-strong"
1646
- onClick={onClose}
1647
- >
1648
- <X className="w-5 h-5" />
1649
- </button>
1650
-
1651
- <div className="mt-4 space-y-4">
1652
- <div className="grid grid-cols-2 gap-4">
1653
- <div className="p-3 rounded-xl bg-bg/40 border border-border/40">
1654
- <span className="text-[10px] text-muted uppercase font-bold tracking-wider mb-1 block">
1655
- Status
1656
- </span>
1657
- <AgentStatusBadge status={statusDetail?.status || agent.status} />
1658
- </div>
1659
- <div className="p-3 rounded-xl bg-bg/40 border border-border/40">
1660
- <span className="text-[10px] text-muted uppercase font-bold tracking-wider mb-1 block">
1661
- DB Status
1662
- </span>
1663
- <span className="text-xs font-mono">
1664
- {statusDetail?.databaseStatus || agent.database_status || "—"}
1665
- </span>
1666
- </div>
1667
- <div className="p-3 rounded-xl bg-bg/40 border border-border/40 col-span-2">
1668
- <span className="text-[10px] text-muted uppercase font-bold tracking-wider mb-1 block">
1669
- Heartbeat
1670
- </span>
1671
- <span className="text-xs font-mono">
1672
- {statusDetail?.lastHeartbeat
1673
- ? new Date(statusDetail.lastHeartbeat).toLocaleString()
1674
- : agent.last_heartbeat_at
1675
- ? new Date(agent.last_heartbeat_at).toLocaleString()
1676
- : "No heartbeat yet"}
1677
- </span>
1678
- </div>
1679
- </div>
1680
-
1681
- <div className="p-3 rounded-xl bg-bg/80 border border-border/40">
1682
- <span className="text-[10px] text-muted uppercase font-bold tracking-wider mb-2 flex items-center gap-2">
1683
- <Terminal className="w-3 h-3" /> Live Logs
1684
- </span>
1685
- <div className="h-64 overflow-y-auto custom-scrollbar bg-black/50 rounded-lg p-3 border border-border/20">
1686
- <pre className="text-[10px] font-mono text-txt-strong/80 whitespace-pre-wrap break-all">
1687
- {logs || "No logs available. Deploying..."}
1688
- <div ref={logsEndRef} />
1689
- </pre>
1690
- </div>
1691
- </div>
1692
- </div>
1693
- </SectionCard>
1694
- </div>
1695
- );
1696
- }