@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,1384 +0,0 @@
1
- /**
2
- * E2E tests for Character Customization (CharacterView).
3
- *
4
- * Tests cover:
5
- * 1. Identity editing (name, bio, system prompt)
6
- * 2. Voice picker placement and editing layout
7
- * 3. Style configuration
8
- * 4. Avatar selection
9
- * 5. Save functionality
10
- */
11
-
12
- import http from "node:http";
13
- // @vitest-environment jsdom
14
- import React from "react";
15
- import TestRenderer, { act } from "react-test-renderer";
16
- import {
17
- afterAll,
18
- beforeAll,
19
- beforeEach,
20
- describe,
21
- expect,
22
- it,
23
- vi,
24
- } from "vitest";
25
-
26
- // ---------------------------------------------------------------------------
27
- // Part 1: API Tests for Character Endpoints
28
- // ---------------------------------------------------------------------------
29
-
30
- async function req(
31
- port: number,
32
- method: string,
33
- path: string,
34
- body?: Record<string, unknown>,
35
- ): Promise<{ status: number; data: Record<string, unknown> }> {
36
- return new Promise((resolve, reject) => {
37
- const payload = body ? JSON.stringify(body) : undefined;
38
- const r = http.request(
39
- {
40
- hostname: "127.0.0.1",
41
- port,
42
- path,
43
- method,
44
- headers: {
45
- "Content-Type": "application/json",
46
- ...(payload ? { "Content-Length": Buffer.byteLength(payload) } : {}),
47
- },
48
- },
49
- (res) => {
50
- const chunks: Buffer[] = [];
51
- res.on("data", (c: Buffer) => chunks.push(c));
52
- res.on("end", () => {
53
- const raw = Buffer.concat(chunks).toString("utf-8");
54
- let data: Record<string, unknown> = {};
55
- try {
56
- data = JSON.parse(raw) as Record<string, unknown>;
57
- } catch {
58
- data = { _raw: raw };
59
- }
60
- resolve({ status: res.statusCode ?? 0, data });
61
- });
62
- },
63
- );
64
- r.on("error", reject);
65
- if (payload) r.write(payload);
66
- r.end();
67
- });
68
- }
69
-
70
- function createCharacterTestServer(): Promise<{
71
- port: number;
72
- close: () => Promise<void>;
73
- getCharacter: () => {
74
- name: string;
75
- bio: string[];
76
- system: string;
77
- adjectives: string[];
78
- style: { all: string[]; chat: string[]; post: string[] };
79
- };
80
- }> {
81
- const character = {
82
- name: "TestAgent",
83
- bio: ["A helpful AI assistant"],
84
- system: "You are a helpful assistant",
85
- adjectives: ["friendly", "helpful"],
86
- style: {
87
- all: ["Be concise"],
88
- chat: ["Use casual tone"],
89
- post: ["Be informative"],
90
- },
91
- avatar: 1,
92
- };
93
-
94
- const json = (res: http.ServerResponse, data: unknown, status = 200) => {
95
- res.writeHead(status, {
96
- "Content-Type": "application/json",
97
- "Access-Control-Allow-Origin": "*",
98
- });
99
- res.end(JSON.stringify(data));
100
- };
101
-
102
- const readBody = (r: http.IncomingMessage): Promise<string> =>
103
- new Promise((ok) => {
104
- const c: Buffer[] = [];
105
- r.on("data", (d: Buffer) => c.push(d));
106
- r.on("end", () => ok(Buffer.concat(c).toString()));
107
- });
108
-
109
- const routes: Record<
110
- string,
111
- (
112
- req: http.IncomingMessage,
113
- res: http.ServerResponse,
114
- ) => Promise<void> | void
115
- > = {
116
- "GET /api/character": (_r, res) => json(res, { character }),
117
- "PUT /api/character": async (r, res) => {
118
- const body = JSON.parse(await readBody(r)) as Record<string, unknown>;
119
- if (body.name) character.name = body.name as string;
120
- if (body.bio) character.bio = body.bio as string[];
121
- if (body.system) character.system = body.system as string;
122
- if (body.adjectives) character.adjectives = body.adjectives as string[];
123
- if (body.style) character.style = body.style as typeof character.style;
124
- if (body.avatar !== undefined) character.avatar = body.avatar as number;
125
- json(res, { ok: true, character });
126
- },
127
- "PATCH /api/character": async (r, res) => {
128
- const body = JSON.parse(await readBody(r)) as Record<string, unknown>;
129
- Object.assign(character, body);
130
- json(res, { ok: true, character });
131
- },
132
- };
133
-
134
- const server = http.createServer(async (rq, rs) => {
135
- if (rq.method === "OPTIONS") {
136
- rs.writeHead(204, {
137
- "Access-Control-Allow-Origin": "*",
138
- "Access-Control-Allow-Methods": "*",
139
- "Access-Control-Allow-Headers": "*",
140
- });
141
- rs.end();
142
- return;
143
- }
144
- const key = `${rq.method} ${new URL(rq.url ?? "/", "http://localhost").pathname}`;
145
- const handler = routes[key];
146
- if (handler) {
147
- await handler(rq, rs);
148
- } else {
149
- json(rs, { error: "Not found" }, 404);
150
- }
151
- });
152
-
153
- return new Promise((ok) => {
154
- server.listen(0, "127.0.0.1", () => {
155
- const addr = server.address();
156
- ok({
157
- port: typeof addr === "object" && addr ? addr.port : 0,
158
- close: () => new Promise<void>((r) => server.close(() => r())),
159
- getCharacter: () => ({
160
- name: character.name,
161
- bio: character.bio,
162
- system: character.system,
163
- adjectives: character.adjectives,
164
- style: character.style,
165
- }),
166
- });
167
- });
168
- });
169
- }
170
-
171
- describe("Character API", () => {
172
- let port: number;
173
- let close: () => Promise<void>;
174
- let getCharacter: ReturnType<
175
- typeof createCharacterTestServer
176
- > extends Promise<infer T>
177
- ? T["getCharacter"]
178
- : never;
179
-
180
- beforeAll(async () => {
181
- ({ port, close, getCharacter } = await createCharacterTestServer());
182
- });
183
-
184
- afterAll(async () => {
185
- await close();
186
- });
187
-
188
- it("GET /api/character returns character data", async () => {
189
- const { status, data } = await req(port, "GET", "/api/character");
190
- expect(status).toBe(200);
191
- expect(data.character).toBeDefined();
192
- const char = data.character as Record<string, unknown>;
193
- expect(char.name).toBe("TestAgent");
194
- expect(Array.isArray(char.bio)).toBe(true);
195
- });
196
-
197
- it("PUT /api/character updates name", async () => {
198
- const { status, data } = await req(port, "PUT", "/api/character", {
199
- name: "UpdatedAgent",
200
- });
201
- expect(status).toBe(200);
202
- expect(data.ok).toBe(true);
203
- expect(getCharacter().name).toBe("UpdatedAgent");
204
- });
205
-
206
- it("PUT /api/character updates bio", async () => {
207
- const newBio = ["First line", "Second line"];
208
- const { status } = await req(port, "PUT", "/api/character", {
209
- bio: newBio,
210
- });
211
- expect(status).toBe(200);
212
- expect(getCharacter().bio).toEqual(newBio);
213
- });
214
-
215
- it("PUT /api/character updates system prompt", async () => {
216
- const newSystem = "You are a specialized assistant for coding tasks";
217
- const { status } = await req(port, "PUT", "/api/character", {
218
- system: newSystem,
219
- });
220
- expect(status).toBe(200);
221
- expect(getCharacter().system).toBe(newSystem);
222
- });
223
-
224
- it("PUT /api/character updates adjectives", async () => {
225
- const newAdj = ["creative", "analytical", "patient"];
226
- const { status } = await req(port, "PUT", "/api/character", {
227
- adjectives: newAdj,
228
- });
229
- expect(status).toBe(200);
230
- expect(getCharacter().adjectives).toEqual(newAdj);
231
- });
232
-
233
- it("PUT /api/character updates style rules", async () => {
234
- const newStyle = {
235
- all: ["Be precise", "Use examples"],
236
- chat: ["Keep it casual"],
237
- post: ["Be thorough"],
238
- };
239
- const { status } = await req(port, "PUT", "/api/character", {
240
- style: newStyle,
241
- });
242
- expect(status).toBe(200);
243
- expect(getCharacter().style).toEqual(newStyle);
244
- });
245
-
246
- it("PATCH /api/character partially updates character", async () => {
247
- const { status } = await req(port, "PATCH", "/api/character", {
248
- name: "PartialUpdate",
249
- });
250
- expect(status).toBe(200);
251
- expect(getCharacter().name).toBe("PartialUpdate");
252
- });
253
- });
254
-
255
- // ---------------------------------------------------------------------------
256
- // Part 2: UI Tests for CharacterView
257
- // ---------------------------------------------------------------------------
258
-
259
- const { mockUseApp } = vi.hoisted(() => ({
260
- mockUseApp: vi.fn(),
261
- }));
262
-
263
- vi.mock("@elizaos/app-core/state", async () => {
264
- const actual = await vi.importActual("@elizaos/app-core/state");
265
- return {
266
- ...actual,
267
- useApp: () => mockUseApp(),
268
- };
269
- });
270
-
271
- vi.mock("@elizaos/app-core/api", () => ({
272
- client: {
273
- getCharacter: vi.fn().mockResolvedValue({
274
- name: "TestAgent",
275
- bio: ["Bio line 1"],
276
- system: "System prompt",
277
- adjectives: ["friendly"],
278
- style: { all: [], chat: [], post: [] },
279
- }),
280
- getConfig: vi.fn().mockResolvedValue({
281
- messages: {
282
- tts: {
283
- provider: "elevenlabs",
284
- elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" },
285
- },
286
- },
287
- }),
288
- updateConfig: vi.fn().mockResolvedValue({ ok: true }),
289
- getOnboardingOptions: vi.fn().mockResolvedValue({
290
- styles: [],
291
- }),
292
- updateCharacter: vi.fn().mockResolvedValue({
293
- ok: true,
294
- character: {},
295
- agentName: "TestAgent",
296
- }),
297
- },
298
- }));
299
-
300
- vi.mock("../../src/components/AvatarSelector", () => ({
301
- AvatarSelector: ({
302
- value,
303
- onChange,
304
- }: {
305
- value: number;
306
- onChange: (v: number) => void;
307
- }) =>
308
- React.createElement(
309
- "div",
310
- { "data-testid": "avatar-selector" },
311
- React.createElement(
312
- "button",
313
- { type: "button", onClick: () => onChange(2) },
314
- `Avatar ${value}`,
315
- ),
316
- ),
317
- }));
318
-
319
- vi.mock("@elizaos/app-core/config", () => ({
320
- ConfigRenderer: () => React.createElement("div", null, "ConfigRenderer"),
321
- defaultRegistry: {},
322
- }));
323
-
324
- import { client } from "@elizaos/app-core/api";
325
- import { CharacterView } from "../../src/components/CharacterView";
326
-
327
- type CharacterData = {
328
- name: string;
329
- username?: string;
330
- bio: string | string[];
331
- system: string;
332
- adjectives: string[];
333
- topics?: string[];
334
- style: { all: string[]; chat: string[]; post: string[] };
335
- messageExamples?: Array<{
336
- examples: Array<{ name: string; content: { text: string } }>;
337
- }>;
338
- postExamples?: string[];
339
- };
340
-
341
- type CharacterState = {
342
- tab: "character" | "character-select";
343
- characterLoading: boolean;
344
- characterData: CharacterData | null;
345
- characterDraft: CharacterData | null;
346
- characterSaving: boolean;
347
- characterDirty: boolean;
348
- characterSaveSuccess: string | null;
349
- characterSaveError: string | null;
350
- selectedVrmIndex: number;
351
- onboardingOptions: {
352
- styles: Array<{
353
- catchphrase: string;
354
- hint: string;
355
- bio: string[];
356
- system: string;
357
- adjectives: string[];
358
- style: { all: string[]; chat: string[]; post: string[] };
359
- postExamples: string[];
360
- messageExamples: Array<
361
- Array<{ user: string; content: { text: string } }>
362
- >;
363
- }>;
364
- } | null;
365
- registryStatus: null;
366
- registryLoading: boolean;
367
- registryRegistering: boolean;
368
- registryError: string | null;
369
- dropStatus: null;
370
- mintInProgress: boolean;
371
- mintResult: null;
372
- };
373
-
374
- function createCharacterUIState(): CharacterState {
375
- const charData: CharacterData = {
376
- name: "Ai",
377
- username: "Ai",
378
- bio: ["Ai is soft and friendly"],
379
- system: "You are Ai",
380
- adjectives: ["friendly", "helpful"],
381
- style: { all: ["Rule 1"], chat: ["Chat rule"], post: ["Post rule"] },
382
- messageExamples: [
383
- {
384
- examples: [
385
- { name: "{{user1}}", content: { text: "hi" } },
386
- { name: "Ai", content: { text: "hey" } },
387
- ],
388
- },
389
- ],
390
- postExamples: [],
391
- };
392
-
393
- return {
394
- tab: "character-select",
395
- characterLoading: false,
396
- characterData: charData,
397
- characterDraft: { ...charData },
398
- characterSaving: false,
399
- characterDirty: false,
400
- characterSaveSuccess: null,
401
- characterSaveError: null,
402
- selectedVrmIndex: 2,
403
- onboardingOptions: {
404
- styles: [
405
- {
406
- catchphrase: "uwu~",
407
- hint: "warm & caring",
408
- bio: ["{{name}} is soft and friendly"],
409
- system: "You are {{name}}",
410
- adjectives: ["friendly", "helpful"],
411
- style: { all: ["Rule 1"], chat: ["Chat rule"], post: ["Post rule"] },
412
- postExamples: [],
413
- messageExamples: [
414
- [
415
- { user: "{{user1}}", content: { text: "hi" } },
416
- { user: "{{agentName}}", content: { text: "hey" } },
417
- ],
418
- ],
419
- },
420
- {
421
- catchphrase: "Noted.",
422
- hint: "dignified & commanding",
423
- bio: ["{{name}} is precise"],
424
- system: "You are {{name}}, exact and calm.",
425
- adjectives: ["precise", "calm"],
426
- style: { all: ["Be exact"], chat: ["Stay calm"], post: ["Be clear"] },
427
- postExamples: [],
428
- messageExamples: [
429
- [
430
- { user: "{{user1}}", content: { text: "status?" } },
431
- { user: "{{agentName}}", content: { text: "On track." } },
432
- ],
433
- ],
434
- },
435
- ],
436
- },
437
- registryStatus: null,
438
- registryLoading: false,
439
- registryRegistering: false,
440
- registryError: null,
441
- dropStatus: null,
442
- mintInProgress: false,
443
- mintResult: null,
444
- };
445
- }
446
-
447
- function prepareCharacterDraftForSave(draft: CharacterData) {
448
- const prepared: Record<string, unknown> = { ...draft };
449
-
450
- if (typeof prepared.bio === "string") {
451
- const lines = prepared.bio
452
- .split("\n")
453
- .map((line) => line.trim())
454
- .filter((line) => line.length > 0);
455
- prepared.bio = lines.length > 0 ? lines : undefined;
456
- }
457
-
458
- if (Array.isArray(prepared.adjectives) && prepared.adjectives.length === 0) {
459
- delete prepared.adjectives;
460
- }
461
- if (
462
- Array.isArray(prepared.postExamples) &&
463
- prepared.postExamples.length === 0
464
- ) {
465
- delete prepared.postExamples;
466
- }
467
- if (
468
- Array.isArray(prepared.messageExamples) &&
469
- prepared.messageExamples.length === 0
470
- ) {
471
- delete prepared.messageExamples;
472
- }
473
-
474
- if (prepared.style && typeof prepared.style === "object") {
475
- const style = prepared.style as Record<string, string[] | undefined>;
476
- if (style.all && style.all.length === 0) delete style.all;
477
- if (style.chat && style.chat.length === 0) delete style.chat;
478
- if (style.post && style.post.length === 0) delete style.post;
479
- if (!style.all && !style.chat && !style.post) delete prepared.style;
480
- }
481
-
482
- if (
483
- typeof prepared.username === "string" &&
484
- prepared.username.trim().length > 0
485
- ) {
486
- prepared.username = prepared.username.trim();
487
- } else if (
488
- typeof prepared.name === "string" &&
489
- prepared.name.trim().length > 0
490
- ) {
491
- prepared.username = prepared.name.trim();
492
- }
493
- if (!prepared.name) delete prepared.name;
494
- if (!prepared.username) delete prepared.username;
495
- if (!prepared.system) delete prepared.system;
496
-
497
- return prepared;
498
- }
499
-
500
- describe("CharacterView UI", () => {
501
- let state: CharacterState;
502
- let _saveCharacterCalled: boolean;
503
-
504
- beforeEach(() => {
505
- state = createCharacterUIState();
506
- _saveCharacterCalled = false;
507
- vi.mocked(client.updateCharacter).mockClear();
508
- vi.mocked(client.updateConfig).mockClear();
509
-
510
- mockUseApp.mockReset();
511
- mockUseApp.mockImplementation(() => ({
512
- uiLanguage: "en",
513
- t: (k: string) => k,
514
- ...state,
515
- setTab: vi.fn((tab: CharacterState["tab"]) => {
516
- state.tab = tab;
517
- }),
518
- loadCharacter: vi.fn(),
519
- loadRegistryStatus: vi.fn(),
520
- loadDropStatus: vi.fn(),
521
- handleSaveCharacter: async () => {
522
- _saveCharacterCalled = true;
523
- state.characterSaving = false;
524
- state.characterDirty = false;
525
- },
526
- handleCharacterFieldInput: (field: string, value: unknown) => {
527
- if (state.characterDraft) {
528
- (state.characterDraft as Record<string, unknown>)[field] = value;
529
- state.characterDirty = true;
530
- }
531
- },
532
- handleCharacterArrayInput: vi.fn(),
533
- handleCharacterStyleInput: vi.fn(),
534
- setState: vi.fn((key: string, value: unknown) => {
535
- (state as Record<string, unknown>)[key] = value;
536
- }),
537
- }));
538
- });
539
-
540
- it("renders CharacterView with character name", async () => {
541
- let tree: TestRenderer.ReactTestRenderer | null = null;
542
-
543
- await act(async () => {
544
- tree = TestRenderer.create(React.createElement(CharacterView));
545
- });
546
-
547
- expect(tree).not.toBeNull();
548
- const json = tree?.toJSON();
549
- expect(json).not.toBeNull();
550
- });
551
-
552
- it("renders the character roster as a single full-width row without a separate current character card", async () => {
553
- let tree: TestRenderer.ReactTestRenderer | null = null;
554
-
555
- await act(async () => {
556
- tree = TestRenderer.create(React.createElement(CharacterView));
557
- });
558
-
559
- const roster = tree?.root.find(
560
- (node) => node.props["data-testid"] === "character-roster-grid",
561
- );
562
- expect(roster).toBeDefined();
563
- expect(roster?.props.className).toContain("overflow-hidden");
564
-
565
- expect(
566
- tree?.root.findAll(
567
- (node) => node.props["data-testid"] === "character-current-card",
568
- ) ?? [],
569
- ).toHaveLength(0);
570
- });
571
-
572
- it("anchors the scene overlay layout to the bottom of the viewport", async () => {
573
- let tree: TestRenderer.ReactTestRenderer | null = null;
574
-
575
- await act(async () => {
576
- tree = TestRenderer.create(
577
- React.createElement(CharacterView, { sceneOverlay: true }),
578
- );
579
- });
580
-
581
- const json = tree?.toJSON();
582
- expect(json).not.toBeNull();
583
- expect(
584
- json &&
585
- !Array.isArray(json) &&
586
- typeof json.props.className === "string" &&
587
- json.props.className.includes("min-h-full"),
588
- ).toBe(true);
589
- expect(
590
- json &&
591
- !Array.isArray(json) &&
592
- typeof json.props.className === "string" &&
593
- json.props.className.includes("justify-end"),
594
- ).toBe(true);
595
- });
596
-
597
- it("starts in roster mode even when the saved draft differs from the selected preset", async () => {
598
- state.characterDraft = {
599
- ...(state.characterDraft as CharacterData),
600
- system: "Custom system override",
601
- };
602
- let tree: TestRenderer.ReactTestRenderer | null = null;
603
-
604
- await act(async () => {
605
- tree = TestRenderer.create(React.createElement(CharacterView));
606
- });
607
-
608
- expect(
609
- tree?.root.findAll(
610
- (node) => node.props["data-testid"] === "character-notebook",
611
- ) ?? [],
612
- ).toHaveLength(0);
613
- expect(state.characterDraft?.name).toBe("Ai");
614
- expect(state.characterDraft?.bio).toEqual(["Ai is soft and friendly"]);
615
- expect(state.characterDraft?.system).toBe("Custom system override");
616
- expect(state.selectedVrmIndex).toBe(2);
617
- });
618
-
619
- it("keeps roster mode when routed to the character tab until custom mode is enabled", async () => {
620
- state.tab = "character";
621
-
622
- let tree: TestRenderer.ReactTestRenderer | null = null;
623
-
624
- await act(async () => {
625
- tree = TestRenderer.create(React.createElement(CharacterView));
626
- });
627
- await act(async () => {
628
- tree?.update(React.createElement(CharacterView));
629
- });
630
-
631
- expect(
632
- tree?.root.findAll(
633
- (node) => node.props["data-testid"] === "character-notebook",
634
- ) ?? [],
635
- ).toHaveLength(1);
636
- expect(
637
- tree?.root.findAll(
638
- (node) => node.props["data-testid"] === "character-roster-grid",
639
- ) ?? [],
640
- ).toHaveLength(0);
641
- });
642
-
643
- it("removes adjective editors from the character screen", async () => {
644
- let tree: TestRenderer.ReactTestRenderer | null = null;
645
-
646
- await act(async () => {
647
- tree = TestRenderer.create(React.createElement(CharacterView));
648
- });
649
-
650
- const adjectiveLabels =
651
- tree?.root.findAll((node) =>
652
- node.children?.some(
653
- (child) =>
654
- child === "Adjectives" || child === "characterview.adjectives",
655
- ),
656
- ) ?? [];
657
-
658
- expect(adjectiveLabels).toHaveLength(0);
659
- });
660
-
661
- it("shows the voice picker in roster mode and keeps it visible while customizing", async () => {
662
- let tree: TestRenderer.ReactTestRenderer | null = null;
663
-
664
- await act(async () => {
665
- tree = TestRenderer.create(React.createElement(CharacterView));
666
- });
667
-
668
- expect(
669
- tree?.root.findAll(
670
- (node) => node.props["data-testid"] === "character-voice-picker",
671
- ) ?? [],
672
- ).toHaveLength(1);
673
-
674
- const customizeButton = tree?.root.find(
675
- (node) => node.props["data-testid"] === "character-customize-toggle",
676
- );
677
-
678
- await act(async () => {
679
- customizeButton?.props.onClick();
680
- });
681
- await act(async () => {
682
- tree?.update(React.createElement(CharacterView));
683
- });
684
-
685
- expect(
686
- tree?.root.findAll(
687
- (node) => node.props["data-testid"] === "character-roster-grid",
688
- ) ?? [],
689
- ).toHaveLength(0);
690
- expect(
691
- tree?.root.findAll(
692
- (node) => node.props["data-testid"] === "character-voice-picker",
693
- ) ?? [],
694
- ).toHaveLength(1);
695
- expect(
696
- tree?.root.findAll(
697
- (node) => node.props["data-testid"] === "character-notebook",
698
- ) ?? [],
699
- ).toHaveLength(1);
700
- });
701
-
702
- it("shows style sections when navigating to the styleRules sidebar tab", async () => {
703
- state.tab = "character";
704
-
705
- let tree: TestRenderer.ReactTestRenderer | null = null;
706
-
707
- await act(async () => {
708
- tree = TestRenderer.create(React.createElement(CharacterView));
709
- });
710
- await act(async () => {
711
- tree?.update(React.createElement(CharacterView));
712
- });
713
-
714
- const styleTab = tree?.root.find(
715
- (node) =>
716
- node.props["data-testid"] === "notebook-tab-styleRules" &&
717
- typeof node.props.onClick === "function",
718
- );
719
-
720
- await act(async () => {
721
- styleTab?.props.onClick();
722
- });
723
-
724
- expect(
725
- tree?.root.findAll(
726
- (node) =>
727
- node.props["data-testid"] === "style-section-all" ||
728
- node.props["data-testid"] === "style-section-chat" ||
729
- node.props["data-testid"] === "style-section-post",
730
- ),
731
- ).toHaveLength(3);
732
- });
733
-
734
- it("turning custom off applies the selected character defaults and hides the editors", async () => {
735
- let tree: TestRenderer.ReactTestRenderer | null = null;
736
-
737
- await act(async () => {
738
- tree = TestRenderer.create(React.createElement(CharacterView));
739
- });
740
-
741
- const customizeButton = tree?.root.find(
742
- (node) => node.props["data-testid"] === "character-customize-toggle",
743
- );
744
-
745
- await act(async () => {
746
- customizeButton?.props.onClick();
747
- });
748
-
749
- const backButton = tree?.root.find(
750
- (node) => node.props["data-testid"] === "character-customize-toggle",
751
- );
752
-
753
- await act(async () => {
754
- backButton?.props.onClick();
755
- });
756
-
757
- expect(state.characterDraft?.name).toBe("Ai");
758
- expect(state.characterDraft?.bio).toBe("Ai is soft and friendly");
759
- expect(state.characterDraft?.system).toBe("You are Ai");
760
- expect(state.selectedVrmIndex).toBe(2);
761
- expect(
762
- tree?.root.findAll(
763
- (node) => node.props["data-testid"] === "character-customize-grid",
764
- ) ?? [],
765
- ).toHaveLength(0);
766
- expect(
767
- tree?.root.findAll(
768
- (node) => node.props["data-testid"] === "character-roster-grid",
769
- ) ?? [],
770
- ).toHaveLength(1);
771
- });
772
-
773
- it("turning custom off keeps deep overrides intact", async () => {
774
- let tree: TestRenderer.ReactTestRenderer | null = null;
775
-
776
- await act(async () => {
777
- tree = TestRenderer.create(React.createElement(CharacterView));
778
- });
779
-
780
- const customizeButton = tree?.root.find(
781
- (node) => node.props["data-testid"] === "character-customize-toggle",
782
- );
783
-
784
- await act(async () => {
785
- customizeButton?.props.onClick();
786
- });
787
-
788
- await act(async () => {
789
- state.characterDraft = {
790
- ...(state.characterDraft as CharacterData),
791
- system: "Custom preserved system",
792
- };
793
- tree?.update(React.createElement(CharacterView));
794
- });
795
-
796
- const backButton = tree?.root.find(
797
- (node) => node.props["data-testid"] === "character-customize-toggle",
798
- );
799
-
800
- await act(async () => {
801
- backButton?.props.onClick();
802
- });
803
-
804
- expect(state.characterDraft?.system).toBe("Custom preserved system");
805
- expect(
806
- tree?.root.findAll(
807
- (node) => node.props["data-testid"] === "character-roster-grid",
808
- ) ?? [],
809
- ).toHaveLength(1);
810
- });
811
-
812
- it("does not wipe deep overrides when switching presets after leaving custom mode", async () => {
813
- let tree: TestRenderer.ReactTestRenderer | null = null;
814
-
815
- await act(async () => {
816
- tree = TestRenderer.create(React.createElement(CharacterView));
817
- });
818
-
819
- const customizeButton = tree?.root.find(
820
- (node) => node.props["data-testid"] === "character-customize-toggle",
821
- );
822
-
823
- await act(async () => {
824
- customizeButton?.props.onClick();
825
- });
826
-
827
- await act(async () => {
828
- state.characterDraft = {
829
- ...(state.characterDraft as CharacterData),
830
- system: "Custom preserved system",
831
- };
832
- tree?.update(React.createElement(CharacterView));
833
- });
834
-
835
- const backButton = tree?.root.find(
836
- (node) => node.props["data-testid"] === "character-customize-toggle",
837
- );
838
-
839
- await act(async () => {
840
- backButton?.props.onClick();
841
- });
842
-
843
- const sakuyaCard = tree?.root.find(
844
- (node) => node.props["data-testid"] === "character-preset-Noted.",
845
- );
846
-
847
- await act(async () => {
848
- sakuyaCard?.props.onClick();
849
- });
850
-
851
- expect(state.characterDraft?.name).toBe("Ai");
852
- expect(state.characterDraft?.system).toBe("Custom preserved system");
853
- expect(state.selectedVrmIndex).toBe(1);
854
- });
855
-
856
- it("hides character select while customizing and restores it when going back", async () => {
857
- let tree: TestRenderer.ReactTestRenderer | null = null;
858
-
859
- await act(async () => {
860
- tree = TestRenderer.create(React.createElement(CharacterView));
861
- });
862
-
863
- const customizeButton = tree?.root.find(
864
- (node) => node.props["data-testid"] === "character-customize-toggle",
865
- );
866
-
867
- await act(async () => {
868
- customizeButton?.props.onClick();
869
- });
870
-
871
- expect(
872
- tree?.root.findAll(
873
- (node) => node.props["data-testid"] === "character-roster-grid",
874
- ) ?? [],
875
- ).toHaveLength(0);
876
- expect(
877
- tree?.root.findAll(
878
- (node) => node.props["data-testid"] === "character-customize-header",
879
- ) ?? [],
880
- ).toHaveLength(0);
881
-
882
- const backButton = tree?.root.find(
883
- (node) => node.props["data-testid"] === "character-customize-toggle",
884
- );
885
-
886
- await act(async () => {
887
- backButton?.props.onClick();
888
- });
889
-
890
- expect(
891
- tree?.root.findAll(
892
- (node) => node.props["data-testid"] === "character-roster-grid",
893
- ) ?? [],
894
- ).toHaveLength(1);
895
- });
896
-
897
- it("uses the selected character defaults when switching characters with custom off", async () => {
898
- let tree: TestRenderer.ReactTestRenderer | null = null;
899
- await act(async () => {
900
- tree = TestRenderer.create(React.createElement(CharacterView));
901
- });
902
-
903
- const sakuyaCard = tree?.root.find(
904
- (node) => node.props["data-testid"] === "character-preset-Noted.",
905
- );
906
-
907
- await act(async () => {
908
- sakuyaCard?.props.onClick();
909
- });
910
-
911
- expect(state.characterDraft?.name).toBe("Rin");
912
- expect(state.characterDraft?.bio).toBe("Rin is precise");
913
- expect(state.characterDraft?.system).toBe("You are Rin, exact and calm.");
914
- expect(state.selectedVrmIndex).toBe(1);
915
- });
916
-
917
- it("preserves deep custom character settings on load while staying in roster mode", async () => {
918
- state.characterData = {
919
- name: "Reimu",
920
- username: "Reimu",
921
- bio: ["Custom bio line"],
922
- system: "Custom Reimu system",
923
- adjectives: ["friendly", "helpful", "wildcard"],
924
- style: {
925
- all: ["Custom all rule"],
926
- chat: ["Custom chat rule"],
927
- post: ["Custom post rule"],
928
- },
929
- messageExamples: [
930
- {
931
- examples: [
932
- { name: "{{user1}}", content: { text: "hey?" } },
933
- { name: "Reimu", content: { text: "custom answer" } },
934
- ],
935
- },
936
- ],
937
- postExamples: ["Custom post"],
938
- };
939
- state.characterDraft = { ...state.characterData };
940
-
941
- let tree: TestRenderer.ReactTestRenderer | null = null;
942
- await act(async () => {
943
- tree = TestRenderer.create(React.createElement(CharacterView));
944
- });
945
-
946
- expect(
947
- tree?.root.findAll(
948
- (node) => node.props["data-testid"] === "character-notebook",
949
- ) ?? [],
950
- ).toHaveLength(0);
951
- expect(
952
- tree?.root.findAll(
953
- (node) => node.props["data-testid"] === "character-roster-grid",
954
- ) ?? [],
955
- ).toHaveLength(1);
956
- expect(state.characterDraft?.bio).toEqual(["Custom bio line"]);
957
- expect(state.characterDraft?.system).toBe("Custom Reimu system");
958
- });
959
-
960
- it("renders save button", async () => {
961
- let tree: TestRenderer.ReactTestRenderer | null = null;
962
-
963
- await act(async () => {
964
- tree = TestRenderer.create(React.createElement(CharacterView));
965
- });
966
-
967
- const saveButtons = tree?.root.findAll(
968
- (node) =>
969
- node.type === "button" &&
970
- node.children.some(
971
- (c) =>
972
- typeof c === "string" &&
973
- (c.toLowerCase().includes("save") ||
974
- c.toLowerCase().includes("update")),
975
- ),
976
- );
977
- expect(saveButtons.length).toBeGreaterThanOrEqual(0);
978
- });
979
-
980
- it("saves the full character payload, voice config, and avatar selection", async () => {
981
- mockUseApp.mockReset();
982
- mockUseApp.mockImplementation(() => ({
983
- uiLanguage: "en",
984
- t: (k: string) => k,
985
- ...state,
986
- setTab: vi.fn((tab: CharacterState["tab"]) => {
987
- state.tab = tab;
988
- }),
989
- loadCharacter: vi.fn(),
990
- loadRegistryStatus: vi.fn(),
991
- loadDropStatus: vi.fn(),
992
- handleSaveCharacter: async () => {
993
- _saveCharacterCalled = true;
994
- const characterDraft = state.characterDraft;
995
- if (!characterDraft) {
996
- throw new Error("Character draft is required before saving");
997
- }
998
- const prepared = prepareCharacterDraftForSave(characterDraft);
999
- const { agentName } = await client.updateCharacter(
1000
- prepared as unknown as CharacterData,
1001
- );
1002
- await client.updateConfig({
1003
- ui: { avatarIndex: state.selectedVrmIndex },
1004
- });
1005
- state.characterSaving = false;
1006
- state.characterDirty = false;
1007
- state.characterSaveSuccess = "Character saved successfully.";
1008
- if (agentName) {
1009
- const fallbackCharacterData =
1010
- state.characterData ?? createCharacterUIState().characterData;
1011
- if (!fallbackCharacterData) {
1012
- throw new Error("Character data is required after saving");
1013
- }
1014
- state.characterData = {
1015
- ...fallbackCharacterData,
1016
- ...(prepared as CharacterData),
1017
- name: agentName,
1018
- };
1019
- }
1020
- },
1021
- handleCharacterFieldInput: (field: string, value: unknown) => {
1022
- if (state.characterDraft) {
1023
- (state.characterDraft as Record<string, unknown>)[field] = value;
1024
- state.characterDirty = true;
1025
- }
1026
- },
1027
- handleCharacterArrayInput: vi.fn(),
1028
- handleCharacterStyleInput: vi.fn(),
1029
- setState: vi.fn((key: string, value: unknown) => {
1030
- (state as Record<string, unknown>)[key] = value;
1031
- }),
1032
- }));
1033
-
1034
- vi.mocked(client.updateCharacter).mockResolvedValue({
1035
- ok: true,
1036
- character: {} as CharacterData,
1037
- agentName: "Custom Sakuya",
1038
- });
1039
-
1040
- let tree: TestRenderer.ReactTestRenderer | null = null;
1041
-
1042
- await act(async () => {
1043
- tree = TestRenderer.create(React.createElement(CharacterView));
1044
- });
1045
-
1046
- state.characterDraft = {
1047
- name: "Custom Sakuya",
1048
- bio: " First line \n\n Second line ",
1049
- system: "Be exact.",
1050
- adjectives: ["precise", "calm"],
1051
- style: {
1052
- all: ["Be exact"],
1053
- chat: ["Stay calm"],
1054
- post: ["Be clear"],
1055
- },
1056
- messageExamples: [
1057
- {
1058
- examples: [
1059
- { name: "{{user1}}", content: { text: "status?" } },
1060
- { name: "Custom Sakuya", content: { text: "On track." } },
1061
- ],
1062
- },
1063
- ],
1064
- postExamples: ["Mission remains on schedule."],
1065
- };
1066
- state.selectedVrmIndex = 4;
1067
-
1068
- const saveButton = tree?.root.find(
1069
- (node) =>
1070
- node.type === "button" &&
1071
- node.children.some(
1072
- (child) => typeof child === "string" && child === "Save Character",
1073
- ),
1074
- );
1075
-
1076
- await act(async () => {
1077
- saveButton?.props.onClick();
1078
- });
1079
-
1080
- expect(_saveCharacterCalled).toBe(true);
1081
- expect(client.updateCharacter).toHaveBeenCalledWith({
1082
- name: "Custom Sakuya",
1083
- username: "Custom Sakuya",
1084
- bio: ["First line", "Second line"],
1085
- system: "Be exact.",
1086
- adjectives: ["precise", "calm"],
1087
- style: {
1088
- all: ["Be exact"],
1089
- chat: ["Stay calm"],
1090
- post: ["Be clear"],
1091
- },
1092
- messageExamples: [
1093
- {
1094
- examples: [
1095
- { name: "{{user1}}", content: { text: "status?" } },
1096
- { name: "Custom Sakuya", content: { text: "On track." } },
1097
- ],
1098
- },
1099
- ],
1100
- postExamples: ["Mission remains on schedule."],
1101
- });
1102
- expect(client.updateConfig).toHaveBeenNthCalledWith(1, {
1103
- ui: { avatarIndex: 4 },
1104
- });
1105
- expect(client.updateConfig).toHaveBeenNthCalledWith(2, {
1106
- messages: {
1107
- tts: {
1108
- provider: "elevenlabs",
1109
- elevenlabs: {
1110
- voiceId: "EXAVITQu4vr4xnSDxMaL",
1111
- modelId: "eleven_flash_v2_5",
1112
- },
1113
- },
1114
- },
1115
- });
1116
- });
1117
-
1118
- it("still saves the character when voice config persistence fails", async () => {
1119
- mockUseApp.mockReset();
1120
- mockUseApp.mockImplementation(() => ({
1121
- uiLanguage: "en",
1122
- t: (k: string) => k,
1123
- ...state,
1124
- setTab: vi.fn((tab: CharacterState["tab"]) => {
1125
- state.tab = tab;
1126
- }),
1127
- loadCharacter: vi.fn(),
1128
- loadRegistryStatus: vi.fn(),
1129
- loadDropStatus: vi.fn(),
1130
- handleSaveCharacter: async () => {
1131
- _saveCharacterCalled = true;
1132
- const characterDraft = state.characterDraft;
1133
- if (!characterDraft) {
1134
- throw new Error("Character draft is required before saving");
1135
- }
1136
- const prepared = prepareCharacterDraftForSave(characterDraft);
1137
- const { agentName } = await client.updateCharacter(
1138
- prepared as unknown as CharacterData,
1139
- );
1140
- await client.updateConfig({
1141
- ui: { avatarIndex: state.selectedVrmIndex },
1142
- });
1143
- state.characterSaving = false;
1144
- state.characterDirty = false;
1145
- state.characterSaveSuccess = "Character saved successfully.";
1146
- if (agentName) {
1147
- const fallbackCharacterData =
1148
- state.characterData ?? createCharacterUIState().characterData;
1149
- if (!fallbackCharacterData) {
1150
- throw new Error("Character data is required after saving");
1151
- }
1152
- state.characterData = {
1153
- ...fallbackCharacterData,
1154
- ...(prepared as CharacterData),
1155
- name: agentName,
1156
- };
1157
- }
1158
- },
1159
- handleCharacterFieldInput: (field: string, value: unknown) => {
1160
- if (state.characterDraft) {
1161
- (state.characterDraft as Record<string, unknown>)[field] = value;
1162
- state.characterDirty = true;
1163
- }
1164
- },
1165
- handleCharacterArrayInput: vi.fn(),
1166
- handleCharacterStyleInput: vi.fn(),
1167
- setState: vi.fn((key: string, value: unknown) => {
1168
- (state as Record<string, unknown>)[key] = value;
1169
- }),
1170
- }));
1171
-
1172
- vi.mocked(client.updateCharacter).mockResolvedValue({
1173
- ok: true,
1174
- character: {} as CharacterData,
1175
- agentName: "Fallback Save",
1176
- });
1177
- vi.mocked(client.updateConfig)
1178
- .mockResolvedValueOnce({ ok: true })
1179
- .mockRejectedValueOnce(new Error("Voice config failed"));
1180
-
1181
- let tree: TestRenderer.ReactTestRenderer | null = null;
1182
-
1183
- await act(async () => {
1184
- tree = TestRenderer.create(React.createElement(CharacterView));
1185
- });
1186
-
1187
- state.characterDraft = {
1188
- name: "Fallback Save",
1189
- bio: "Voice save failed but character should persist",
1190
- system: "Stay resilient.",
1191
- adjectives: ["calm"],
1192
- style: {
1193
- all: ["Keep going"],
1194
- chat: [],
1195
- post: [],
1196
- },
1197
- messageExamples: [],
1198
- postExamples: [],
1199
- };
1200
- state.selectedVrmIndex = 2;
1201
-
1202
- const saveButton = tree?.root.find(
1203
- (node) =>
1204
- node.type === "button" &&
1205
- node.children.some(
1206
- (child) => typeof child === "string" && child === "Save Character",
1207
- ),
1208
- );
1209
-
1210
- await act(async () => {
1211
- saveButton?.props.onClick();
1212
- });
1213
-
1214
- expect(_saveCharacterCalled).toBe(true);
1215
- expect(client.updateCharacter).toHaveBeenCalledWith({
1216
- name: "Fallback Save",
1217
- username: "Fallback Save",
1218
- bio: ["Voice save failed but character should persist"],
1219
- system: "Stay resilient.",
1220
- adjectives: ["calm"],
1221
- style: {
1222
- all: ["Keep going"],
1223
- },
1224
- });
1225
- expect(client.updateConfig).toHaveBeenNthCalledWith(1, {
1226
- ui: { avatarIndex: 2 },
1227
- });
1228
- expect(client.updateConfig).toHaveBeenNthCalledWith(2, {
1229
- messages: {
1230
- tts: {
1231
- provider: "elevenlabs",
1232
- elevenlabs: {
1233
- voiceId: "EXAVITQu4vr4xnSDxMaL",
1234
- modelId: "eleven_flash_v2_5",
1235
- },
1236
- },
1237
- },
1238
- });
1239
- });
1240
-
1241
- it("blocks save before submit when the character name is missing", async () => {
1242
- mockUseApp.mockReset();
1243
- mockUseApp.mockImplementation(() => ({
1244
- uiLanguage: "en",
1245
- t: (k: string) => k,
1246
- ...state,
1247
- setTab: vi.fn((tab: CharacterState["tab"]) => {
1248
- state.tab = tab;
1249
- }),
1250
- loadCharacter: vi.fn(),
1251
- loadRegistryStatus: vi.fn(),
1252
- loadDropStatus: vi.fn(),
1253
- handleSaveCharacter: async () => {
1254
- _saveCharacterCalled = true;
1255
- },
1256
- handleCharacterFieldInput: vi.fn(),
1257
- handleCharacterArrayInput: vi.fn(),
1258
- handleCharacterStyleInput: vi.fn(),
1259
- setState: vi.fn((key: string, value: unknown) => {
1260
- (state as Record<string, unknown>)[key] = value;
1261
- }),
1262
- }));
1263
-
1264
- state.characterDraft = {
1265
- ...createCharacterUIState().characterDraft!,
1266
- name: "",
1267
- username: "",
1268
- };
1269
-
1270
- let tree: TestRenderer.ReactTestRenderer | null = null;
1271
-
1272
- await act(async () => {
1273
- tree = TestRenderer.create(React.createElement(CharacterView));
1274
- });
1275
-
1276
- const saveButton = tree?.root.find(
1277
- (node) =>
1278
- node.type === "button" &&
1279
- node.children.some(
1280
- (child) => typeof child === "string" && child === "Save Character",
1281
- ),
1282
- );
1283
-
1284
- await act(async () => {
1285
- saveButton?.props.onClick();
1286
- });
1287
-
1288
- expect(_saveCharacterCalled).toBe(false);
1289
- expect(client.updateCharacter).not.toHaveBeenCalled();
1290
- expect(state.characterSaveError).toBe(
1291
- "Character name is required before saving.",
1292
- );
1293
- });
1294
-
1295
- it("shows loading state when characterLoading is true", async () => {
1296
- state.characterLoading = true;
1297
- state.characterData = null;
1298
-
1299
- let tree: TestRenderer.ReactTestRenderer | null = null;
1300
-
1301
- await act(async () => {
1302
- tree = TestRenderer.create(React.createElement(CharacterView));
1303
- });
1304
-
1305
- // Should show some loading indicator or empty state
1306
- expect(tree).not.toBeNull();
1307
- });
1308
- });
1309
-
1310
- // ---------------------------------------------------------------------------
1311
- // Part 3: Integration Tests - Character Edit Flow
1312
- // ---------------------------------------------------------------------------
1313
-
1314
- describe("Character Edit Integration", () => {
1315
- let state: CharacterState;
1316
-
1317
- beforeEach(() => {
1318
- state = createCharacterUIState();
1319
-
1320
- mockUseApp.mockReset();
1321
- mockUseApp.mockImplementation(() => ({
1322
- uiLanguage: "en",
1323
- t: (k: string) => k,
1324
- ...state,
1325
- loadCharacter: vi.fn(),
1326
- saveCharacter: vi.fn().mockImplementation(async () => {
1327
- state.characterSaving = false;
1328
- state.characterDirty = false;
1329
- }),
1330
- setCharacterField: (field: string, value: unknown) => {
1331
- if (state.characterData) {
1332
- (state.characterData as Record<string, unknown>)[field] = value;
1333
- state.characterDirty = true;
1334
- }
1335
- },
1336
- }));
1337
- });
1338
-
1339
- it("editing name marks character as dirty", async () => {
1340
- expect(state.characterDirty).toBe(false);
1341
-
1342
- const mockSetField = mockUseApp().setCharacterField;
1343
- mockSetField("name", "NewName");
1344
-
1345
- expect(state.characterDirty).toBe(true);
1346
- expect(state.characterData?.name).toBe("NewName");
1347
- });
1348
-
1349
- it("editing bio marks character as dirty", async () => {
1350
- const mockSetField = mockUseApp().setCharacterField;
1351
- mockSetField("bio", ["New bio line"]);
1352
-
1353
- expect(state.characterDirty).toBe(true);
1354
- expect(state.characterData?.bio).toEqual(["New bio line"]);
1355
- });
1356
-
1357
- it("editing system prompt marks character as dirty", async () => {
1358
- const mockSetField = mockUseApp().setCharacterField;
1359
- mockSetField("system", "New system prompt");
1360
-
1361
- expect(state.characterDirty).toBe(true);
1362
- expect(state.characterData?.system).toBe("New system prompt");
1363
- });
1364
-
1365
- it("adding adjective updates state", async () => {
1366
- const mockSetField = mockUseApp().setCharacterField;
1367
- const newAdj = [...(state.characterData?.adjectives || []), "creative"];
1368
- mockSetField("adjectives", newAdj);
1369
-
1370
- expect(state.characterData?.adjectives).toContain("creative");
1371
- });
1372
-
1373
- it("updating style rules works for all categories", async () => {
1374
- const mockSetField = mockUseApp().setCharacterField;
1375
- const newStyle = {
1376
- all: ["New all rule"],
1377
- chat: ["New chat rule"],
1378
- post: ["New post rule"],
1379
- };
1380
- mockSetField("style", newStyle);
1381
-
1382
- expect(state.characterData?.style).toEqual(newStyle);
1383
- });
1384
- });