@elizaos/app-core 2.0.0-alpha.52 → 2.0.0-alpha.53

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 (1108) hide show
  1. package/{dist/actions → actions}/character.d.ts +2 -2
  2. package/{dist/actions → actions}/character.d.ts.map +1 -1
  3. package/{dist/actions → actions}/cloud.d.ts +2 -2
  4. package/{dist/actions → actions}/cloud.d.ts.map +1 -1
  5. package/{dist/actions → actions}/lifecycle.d.ts +3 -3
  6. package/{dist/actions → actions}/lifecycle.d.ts.map +1 -1
  7. package/{dist/actions → actions}/lifecycle.js +1 -1
  8. package/{dist/actions → actions}/triggers.d.ts +2 -2
  9. package/{dist/actions → actions}/triggers.d.ts.map +1 -1
  10. package/{dist/api → api}/client.d.ts +5 -5
  11. package/{dist/api → api}/client.d.ts.map +1 -1
  12. package/{dist/api → api}/client.js +20 -20
  13. package/{dist/bridge → bridge}/capacitor-bridge.d.ts +10 -10
  14. package/{dist/bridge → bridge}/capacitor-bridge.d.ts.map +1 -1
  15. package/{dist/bridge → bridge}/capacitor-bridge.js +7 -7
  16. package/{dist/bridge → bridge}/electrobun-rpc.js +1 -1
  17. package/{dist/bridge → bridge}/plugin-bridge.d.ts +4 -4
  18. package/{dist/bridge → bridge}/plugin-bridge.d.ts.map +1 -1
  19. package/{dist/bridge → bridge}/plugin-bridge.js +1 -1
  20. package/{dist/bridge → bridge}/storage-bridge.js +3 -3
  21. package/{dist/chat → chat}/index.d.ts +1 -1
  22. package/{dist/chat → chat}/index.d.ts.map +1 -1
  23. package/{dist/chat → chat}/index.js +1 -1
  24. package/{dist/components → components}/BugReportModal.js +1 -1
  25. package/{dist/components → components}/CommandPalette.js +1 -1
  26. package/{dist/components → components}/CompanionSceneHost.js +1 -1
  27. package/{dist/components → components}/ElizaCloudDashboard.js +2 -2
  28. package/{dist/components → components}/EmotePicker.js +2 -2
  29. package/{dist/components → components}/GlobalEmoteOverlay.js +4 -4
  30. package/{dist/components → components}/PairingView.js +1 -1
  31. package/{dist/components → components}/ProviderSwitcher.js +16 -16
  32. package/{dist/components → components}/SecretsView.js +1 -1
  33. package/{dist/components → components}/StartupFailureView.js +1 -1
  34. package/{dist/components → components}/StreamView.js +4 -4
  35. package/{dist/components → components}/StripeEmbeddedCheckout.js +2 -2
  36. package/{dist/components → components}/SubscriptionStatus.js +1 -1
  37. package/{dist/components → components}/VoiceConfigView.js +1 -1
  38. package/{dist/components → components}/avatar/VrmEngine.js +1 -1
  39. package/{dist/components → components}/avatar/VrmViewer.d.ts +1 -1
  40. package/{dist/components → components}/avatar/VrmViewer.d.ts.map +1 -1
  41. package/{dist/components → components}/avatar/VrmViewer.js +3 -3
  42. package/{dist/components → components}/companion/walletUtils.d.ts +1 -1
  43. package/{dist/components → components}/companion/walletUtils.d.ts.map +1 -1
  44. package/{dist/components → components}/companion/walletUtils.js +1 -1
  45. package/{dist/components → components}/format.d.ts +1 -1
  46. package/{dist/components → components}/format.js +1 -1
  47. package/{dist/components → components}/permissions/StreamingPermissions.js +1 -1
  48. package/{dist/components → components}/stream/StatusBar.js +2 -2
  49. package/{dist/components → components}/stream/overlays/useOverlayLayout.d.ts +1 -1
  50. package/{dist/components → components}/stream/overlays/useOverlayLayout.js +2 -2
  51. package/events/index.d.ts +42 -0
  52. package/events/index.d.ts.map +1 -0
  53. package/{dist/events → events}/index.js +16 -16
  54. package/{dist/hooks → hooks}/useRetakeCapture.js +1 -1
  55. package/{src/i18n → i18n}/locales/en.json +9 -9
  56. package/{src/i18n → i18n}/locales/es.json +10 -10
  57. package/{src/i18n → i18n}/locales/ko.json +9 -9
  58. package/{src/i18n → i18n}/locales/pt.json +9 -9
  59. package/{src/i18n → i18n}/locales/zh-CN.json +10 -10
  60. package/{dist/navigation → navigation}/index.js +1 -1
  61. package/package.json +142 -52
  62. package/{dist/platform → platform}/browser-launch.js +1 -1
  63. package/{dist/platform → platform}/init.d.ts +1 -1
  64. package/{dist/platform → platform}/init.d.ts.map +1 -1
  65. package/{dist/platform → platform}/init.js +5 -5
  66. package/{dist/platform → platform}/lifo.d.ts +1 -1
  67. package/{dist/platform → platform}/lifo.d.ts.map +1 -1
  68. package/{dist/platform → platform}/lifo.js +1 -1
  69. package/{dist/state → state}/AppContext.js +14 -14
  70. package/{dist/state → state}/onboarding-resume.js +1 -1
  71. package/{dist/state → state}/persistence.js +11 -11
  72. package/{dist/state → state}/vrm.d.ts +1 -1
  73. package/{dist/state → state}/vrm.d.ts.map +1 -1
  74. package/{dist/state → state}/vrm.js +6 -6
  75. package/{dist/utils → utils}/asset-url.d.ts +1 -1
  76. package/{dist/utils → utils}/asset-url.js +2 -2
  77. package/.turbo/turbo-build.log +0 -12
  78. package/LICENSE +0 -21
  79. package/dist/events/index.d.ts +0 -42
  80. package/dist/events/index.d.ts.map +0 -1
  81. package/dist/i18n/locales/en.json +0 -1195
  82. package/dist/i18n/locales/es.json +0 -1195
  83. package/dist/i18n/locales/ko.json +0 -1195
  84. package/dist/i18n/locales/pt.json +0 -1195
  85. package/dist/i18n/locales/zh-CN.json +0 -1195
  86. package/src/App.tsx +0 -498
  87. package/src/actions/character.test.ts +0 -139
  88. package/src/actions/character.ts +0 -152
  89. package/src/actions/chat-helpers.ts +0 -100
  90. package/src/actions/cloud.ts +0 -59
  91. package/src/actions/index.ts +0 -12
  92. package/src/actions/lifecycle.ts +0 -175
  93. package/src/actions/onboarding.ts +0 -42
  94. package/src/actions/triggers.ts +0 -190
  95. package/src/ambient.d.ts +0 -16
  96. package/src/api/client.ts +0 -5339
  97. package/src/api/index.ts +0 -1
  98. package/src/autonomy/index.ts +0 -477
  99. package/src/bridge/capacitor-bridge.ts +0 -295
  100. package/src/bridge/electrobun-rpc.ts +0 -58
  101. package/src/bridge/electrobun-runtime.ts +0 -28
  102. package/src/bridge/index.ts +0 -5
  103. package/src/bridge/native-plugins.ts +0 -134
  104. package/src/bridge/plugin-bridge.ts +0 -352
  105. package/src/bridge/storage-bridge.ts +0 -162
  106. package/src/chat/index.ts +0 -250
  107. package/src/coding/index.ts +0 -43
  108. package/src/components/AdvancedPageView.tsx +0 -362
  109. package/src/components/AgentActivityBox.tsx +0 -49
  110. package/src/components/ApiKeyConfig.tsx +0 -224
  111. package/src/components/AppsPageView.tsx +0 -52
  112. package/src/components/AppsView.tsx +0 -293
  113. package/src/components/AvatarLoader.tsx +0 -92
  114. package/src/components/AvatarSelector.tsx +0 -223
  115. package/src/components/BscTradePanel.tsx +0 -549
  116. package/src/components/BugReportModal.tsx +0 -499
  117. package/src/components/CharacterView.tsx +0 -1814
  118. package/src/components/ChatAvatar.test.ts +0 -97
  119. package/src/components/ChatAvatar.tsx +0 -147
  120. package/src/components/ChatComposer.tsx +0 -330
  121. package/src/components/ChatMessage.tsx +0 -448
  122. package/src/components/ChatModalView.test.tsx +0 -118
  123. package/src/components/ChatModalView.tsx +0 -125
  124. package/src/components/ChatView.tsx +0 -992
  125. package/src/components/CloudSourceControls.tsx +0 -80
  126. package/src/components/CodingAgentSettingsSection.tsx +0 -538
  127. package/src/components/CommandPalette.tsx +0 -284
  128. package/src/components/CompanionSceneHost.tsx +0 -497
  129. package/src/components/CompanionShell.tsx +0 -31
  130. package/src/components/CompanionView.tsx +0 -109
  131. package/src/components/ConfigPageView.tsx +0 -762
  132. package/src/components/ConfigSaveFooter.tsx +0 -41
  133. package/src/components/ConfirmModal.tsx +0 -379
  134. package/src/components/ConnectionFailedBanner.tsx +0 -91
  135. package/src/components/ConnectorsPageView.tsx +0 -13
  136. package/src/components/ConversationsSidebar.tsx +0 -279
  137. package/src/components/CustomActionEditor.tsx +0 -1127
  138. package/src/components/CustomActionsPanel.tsx +0 -288
  139. package/src/components/CustomActionsView.tsx +0 -322
  140. package/src/components/DatabasePageView.tsx +0 -55
  141. package/src/components/DatabaseView.tsx +0 -814
  142. package/src/components/ElizaCloudDashboard.tsx +0 -1696
  143. package/src/components/EmotePicker.tsx +0 -529
  144. package/src/components/ErrorBoundary.tsx +0 -76
  145. package/src/components/FineTuningView.tsx +0 -1080
  146. package/src/components/GameView.tsx +0 -551
  147. package/src/components/GameViewOverlay.tsx +0 -133
  148. package/src/components/GlobalEmoteOverlay.tsx +0 -152
  149. package/src/components/Header.test.tsx +0 -413
  150. package/src/components/Header.tsx +0 -403
  151. package/src/components/HeartbeatsView.tsx +0 -1003
  152. package/src/components/InventoryView.tsx +0 -388
  153. package/src/components/KnowledgeView.tsx +0 -1128
  154. package/src/components/LanguageDropdown.tsx +0 -188
  155. package/src/components/LifoMonitorPanel.tsx +0 -196
  156. package/src/components/LifoSandboxView.tsx +0 -499
  157. package/src/components/LoadingScreen.tsx +0 -112
  158. package/src/components/LogsPageView.tsx +0 -17
  159. package/src/components/LogsView.tsx +0 -239
  160. package/src/components/MediaGalleryView.tsx +0 -433
  161. package/src/components/MediaSettingsSection.tsx +0 -893
  162. package/src/components/MessageContent.tsx +0 -815
  163. package/src/components/OnboardingWizard.test.tsx +0 -104
  164. package/src/components/OnboardingWizard.tsx +0 -206
  165. package/src/components/PairingView.tsx +0 -110
  166. package/src/components/PermissionsSection.tsx +0 -1186
  167. package/src/components/PluginsPageView.tsx +0 -9
  168. package/src/components/PluginsView.tsx +0 -3165
  169. package/src/components/ProviderSwitcher.tsx +0 -905
  170. package/src/components/RestartBanner.tsx +0 -76
  171. package/src/components/RuntimeView.tsx +0 -460
  172. package/src/components/SaveCommandModal.tsx +0 -211
  173. package/src/components/SecretsView.tsx +0 -569
  174. package/src/components/SettingsView.tsx +0 -825
  175. package/src/components/ShellOverlays.tsx +0 -41
  176. package/src/components/ShortcutsOverlay.tsx +0 -155
  177. package/src/components/SkillsView.tsx +0 -1435
  178. package/src/components/StartupFailureView.tsx +0 -63
  179. package/src/components/StreamView.tsx +0 -483
  180. package/src/components/StripeEmbeddedCheckout.tsx +0 -155
  181. package/src/components/SubscriptionStatus.tsx +0 -640
  182. package/src/components/SystemWarningBanner.tsx +0 -71
  183. package/src/components/ThemeToggle.tsx +0 -100
  184. package/src/components/TrajectoriesView.tsx +0 -526
  185. package/src/components/TrajectoryDetailView.tsx +0 -426
  186. package/src/components/TriggersView.tsx +0 -1
  187. package/src/components/VectorBrowserView.tsx +0 -1633
  188. package/src/components/VoiceConfigView.tsx +0 -674
  189. package/src/components/VrmStage.test.ts +0 -219
  190. package/src/components/VrmStage.tsx +0 -432
  191. package/src/components/WhatsAppQrOverlay.tsx +0 -230
  192. package/src/components/__tests__/chainConfig.test.ts +0 -220
  193. package/src/components/apps/AppDetailPane.tsx +0 -242
  194. package/src/components/apps/AppsCatalogGrid.tsx +0 -137
  195. package/src/components/apps/extensions/registry.ts +0 -13
  196. package/src/components/apps/extensions/types.ts +0 -9
  197. package/src/components/apps/helpers.ts +0 -43
  198. package/src/components/avatar/VrmAnimationLoader.test.ts +0 -164
  199. package/src/components/avatar/VrmAnimationLoader.ts +0 -151
  200. package/src/components/avatar/VrmBlinkController.ts +0 -118
  201. package/src/components/avatar/VrmCameraManager.ts +0 -407
  202. package/src/components/avatar/VrmEngine.ts +0 -2696
  203. package/src/components/avatar/VrmFootShadow.ts +0 -96
  204. package/src/components/avatar/VrmViewer.tsx +0 -421
  205. package/src/components/avatar/__tests__/VrmCameraManager.test.ts +0 -168
  206. package/src/components/avatar/__tests__/VrmEngine.test.ts +0 -1574
  207. package/src/components/avatar/mixamoVRMRigMap.ts +0 -62
  208. package/src/components/avatar/retargetMixamoFbxToVrm.ts +0 -144
  209. package/src/components/avatar/retargetMixamoGltfToVrm.ts +0 -119
  210. package/src/components/chainConfig.ts +0 -380
  211. package/src/components/companion/CompanionHeader.tsx +0 -47
  212. package/src/components/companion/CompanionSceneHost.tsx +0 -5
  213. package/src/components/companion/VrmStage.tsx +0 -2
  214. package/src/components/companion/__tests__/walletUtils.test.ts +0 -742
  215. package/src/components/companion/walletUtils.ts +0 -290
  216. package/src/components/companion-shell-styles.test.ts +0 -142
  217. package/src/components/companion-shell-styles.ts +0 -270
  218. package/src/components/confirm-delete-control.tsx +0 -69
  219. package/src/components/conversations/ConversationListItem.tsx +0 -185
  220. package/src/components/conversations/conversation-utils.ts +0 -151
  221. package/src/components/format.ts +0 -131
  222. package/src/components/index.ts +0 -94
  223. package/src/components/inventory/CopyableAddress.tsx +0 -41
  224. package/src/components/inventory/InventoryToolbar.tsx +0 -142
  225. package/src/components/inventory/NftGrid.tsx +0 -99
  226. package/src/components/inventory/TokenLogo.tsx +0 -71
  227. package/src/components/inventory/TokensTable.tsx +0 -216
  228. package/src/components/inventory/constants.ts +0 -170
  229. package/src/components/inventory/index.ts +0 -29
  230. package/src/components/inventory/media-url.test.ts +0 -38
  231. package/src/components/inventory/media-url.ts +0 -36
  232. package/src/components/inventory/useInventoryData.ts +0 -460
  233. package/src/components/knowledge-upload-image.ts +0 -215
  234. package/src/components/labels.ts +0 -46
  235. package/src/components/onboarding/ActivateStep.tsx +0 -30
  236. package/src/components/onboarding/ConnectionStep.tsx +0 -1530
  237. package/src/components/onboarding/IdentityStep.tsx +0 -272
  238. package/src/components/onboarding/OnboardingPanel.tsx +0 -39
  239. package/src/components/onboarding/OnboardingStepNav.tsx +0 -31
  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 -193
  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 -469
  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 -27
  276. package/src/config/config-catalog.ts +0 -1092
  277. package/src/config/config-field.tsx +0 -1924
  278. package/src/config/config-renderer.tsx +0 -734
  279. package/src/config/index.ts +0 -11
  280. package/src/config/ui-renderer.tsx +0 -1751
  281. package/src/config/ui-spec.ts +0 -256
  282. package/src/events/index.ts +0 -89
  283. package/src/hooks/index.ts +0 -13
  284. package/src/hooks/useBugReport.tsx +0 -43
  285. package/src/hooks/useCanvasWindow.ts +0 -372
  286. package/src/hooks/useChatAvatarVoice.ts +0 -111
  287. package/src/hooks/useContextMenu.ts +0 -127
  288. package/src/hooks/useKeyboardShortcuts.ts +0 -86
  289. package/src/hooks/useLifoSync.ts +0 -143
  290. package/src/hooks/useMemoryMonitor.ts +0 -334
  291. package/src/hooks/useRenderGuard.ts +0 -43
  292. package/src/hooks/useRetakeCapture.ts +0 -67
  293. package/src/hooks/useStreamPopoutNavigation.ts +0 -27
  294. package/src/hooks/useTimeout.ts +0 -37
  295. package/src/hooks/useVoiceChat.ts +0 -1440
  296. package/src/hooks/useWhatsAppPairing.ts +0 -123
  297. package/src/i18n/index.ts +0 -76
  298. package/src/i18n/messages.ts +0 -21
  299. package/src/index.ts +0 -6
  300. package/src/navigation/index.ts +0 -282
  301. package/src/navigation.test.ts +0 -189
  302. package/src/onboarding-config.test.ts +0 -104
  303. package/src/onboarding-config.ts +0 -114
  304. package/src/platform/browser-launch.test.ts +0 -94
  305. package/src/platform/browser-launch.ts +0 -149
  306. package/src/platform/index.ts +0 -58
  307. package/src/platform/init.ts +0 -236
  308. package/src/platform/lifo.ts +0 -225
  309. package/src/providers/index.ts +0 -99
  310. package/src/state/AppContext.tsx +0 -5869
  311. package/src/state/index.ts +0 -6
  312. package/src/state/internal.ts +0 -86
  313. package/src/state/onboarding-resume.test.ts +0 -135
  314. package/src/state/onboarding-resume.ts +0 -263
  315. package/src/state/parsers.test.ts +0 -124
  316. package/src/state/parsers.ts +0 -309
  317. package/src/state/persistence.ts +0 -320
  318. package/src/state/shell-routing.ts +0 -32
  319. package/src/state/types.ts +0 -696
  320. package/src/state/ui-preferences.ts +0 -3
  321. package/src/state/useApp.ts +0 -23
  322. package/src/state/vrm.ts +0 -76
  323. package/src/stories/AppMockProvider.tsx +0 -32
  324. package/src/stories/ChatEmptyState.stories.tsx +0 -27
  325. package/src/stories/ChatMessage.stories.tsx +0 -115
  326. package/src/stories/CompanionHeader.stories.tsx +0 -74
  327. package/src/stories/CompanionView.stories.tsx +0 -33
  328. package/src/stories/ConversationListItem.stories.tsx +0 -102
  329. package/src/stories/TypingIndicator.stories.tsx +0 -28
  330. package/src/types/index.ts +0 -715
  331. package/src/types/react-test-renderer.d.ts +0 -45
  332. package/src/utils/asset-url.ts +0 -110
  333. package/src/utils/assistant-text.ts +0 -172
  334. package/src/utils/clipboard.ts +0 -41
  335. package/src/utils/desktop-dialogs.ts +0 -80
  336. package/src/utils/index.ts +0 -6
  337. package/src/utils/number-parsing.ts +0 -125
  338. package/src/utils/openExternalUrl.ts +0 -20
  339. package/src/utils/spoken-text.ts +0 -65
  340. package/src/utils/streaming-text.ts +0 -120
  341. package/src/voice/index.ts +0 -1
  342. package/src/voice/types.ts +0 -197
  343. package/src/wallet-rpc.ts +0 -176
  344. package/test/app/AppContext.pty-sessions.test.tsx +0 -143
  345. package/test/app/MessageContent.test.tsx +0 -366
  346. package/test/app/PermissionsOnboarding.test.tsx +0 -356
  347. package/test/app/PermissionsSection.test.tsx +0 -573
  348. package/test/app/advanced-trajectory-fine-tuning.e2e.test.ts +0 -397
  349. package/test/app/agent-activity-box.test.tsx +0 -132
  350. package/test/app/agent-transfer-lock.test.ts +0 -274
  351. package/test/app/api-client-electron-fallback.test.ts +0 -139
  352. package/test/app/api-client-timeout.test.ts +0 -75
  353. package/test/app/api-client-ws.test.ts +0 -98
  354. package/test/app/api-client.ws-max-reconnect.test.ts +0 -139
  355. package/test/app/api-client.ws-reconnect.test.ts +0 -157
  356. package/test/app/app-context-autonomy-events.test.ts +0 -478
  357. package/test/app/apps-page-view.test.ts +0 -114
  358. package/test/app/apps-view.test.ts +0 -591
  359. package/test/app/autonomous-workflows.e2e.test.ts +0 -765
  360. package/test/app/autonomy-events.test.ts +0 -150
  361. package/test/app/avatar-selector.test.tsx +0 -52
  362. package/test/app/bsc-trade-panel.test.tsx +0 -134
  363. package/test/app/bug-report-modal.test.tsx +0 -353
  364. package/test/app/character-customization.e2e.test.ts +0 -1199
  365. package/test/app/chat-advanced-features.e2e.test.ts +0 -706
  366. package/test/app/chat-composer.test.tsx +0 -181
  367. package/test/app/chat-language-header.test.ts +0 -64
  368. package/test/app/chat-message.test.tsx +0 -222
  369. package/test/app/chat-modal-view.test.tsx +0 -191
  370. package/test/app/chat-routine-filter.test.ts +0 -96
  371. package/test/app/chat-send-lock.test.ts +0 -1465
  372. package/test/app/chat-stream-api-client.test.tsx +0 -390
  373. package/test/app/chat-view-game-modal.test.tsx +0 -661
  374. package/test/app/chat-view.test.tsx +0 -877
  375. package/test/app/cloud-api.e2e.test.ts +0 -258
  376. package/test/app/cloud-login-flow.e2e.test.ts +0 -494
  377. package/test/app/cloud-login-lock.test.ts +0 -412
  378. package/test/app/command-palette.test.tsx +0 -184
  379. package/test/app/command-registry.test.ts +0 -75
  380. package/test/app/companion-greeting-wave.test.tsx +0 -431
  381. package/test/app/companion-stale-conversation.test.tsx +0 -447
  382. package/test/app/companion-view.test.tsx +0 -690
  383. package/test/app/confirm-delete-control.test.ts +0 -79
  384. package/test/app/confirm-modal.test.tsx +0 -219
  385. package/test/app/connectors-ui.e2e.test.ts +0 -508
  386. package/test/app/conversations-sidebar-game-modal.test.tsx +0 -265
  387. package/test/app/conversations-sidebar.test.tsx +0 -185
  388. package/test/app/custom-actions-smoke.test.ts +0 -387
  389. package/test/app/custom-avatar-api-client.test.ts +0 -207
  390. package/test/app/desktop-utils.test.ts +0 -145
  391. package/test/app/electrobun-rpc-bridge.test.ts +0 -83
  392. package/test/app/events.test.ts +0 -88
  393. package/test/app/export-import-flows.e2e.test.ts +0 -700
  394. package/test/app/fine-tuning-view.test.ts +0 -471
  395. package/test/app/game-view-auth-session.test.tsx +0 -187
  396. package/test/app/game-view.test.ts +0 -444
  397. package/test/app/global-emote-overlay.test.tsx +0 -106
  398. package/test/app/header-status.test.tsx +0 -149
  399. package/test/app/i18n.test.ts +0 -152
  400. package/test/app/inventory-bsc-view.test.ts +0 -940
  401. package/test/app/knowledge-ui.e2e.test.ts +0 -762
  402. package/test/app/knowledge-upload-helpers.test.ts +0 -124
  403. package/test/app/lifecycle-lock.test.ts +0 -267
  404. package/test/app/lifo-popout-utils.test.ts +0 -208
  405. package/test/app/lifo-safe-endpoint.test.ts +0 -34
  406. package/test/app/loading-screen.test.tsx +0 -45
  407. package/test/app/memory-monitor.test.ts +0 -332
  408. package/test/app/navigation.test.tsx +0 -22
  409. package/test/app/onboarding-finish-lock.test.ts +0 -673
  410. package/test/app/onboarding-language.test.tsx +0 -160
  411. package/test/app/onboarding-steps.test.tsx +0 -375
  412. package/test/app/open-external-url.test.ts +0 -65
  413. package/test/app/pages-navigation-smoke.e2e.test.ts +0 -638
  414. package/test/app/pairing-lock.test.ts +0 -260
  415. package/test/app/pairing-view.test.tsx +0 -74
  416. package/test/app/permissions-section.test.ts +0 -432
  417. package/test/app/plugin-bridge.test.ts +0 -109
  418. package/test/app/plugins-ui.e2e.test.ts +0 -605
  419. package/test/app/plugins-view-game-modal.test.tsx +0 -687
  420. package/test/app/plugins-view-toggle-restart.test.ts +0 -129
  421. package/test/app/provider-dropdown-default.test.tsx +0 -300
  422. package/test/app/restart-banner.test.tsx +0 -197
  423. package/test/app/retake-capture.test.ts +0 -84
  424. package/test/app/sandbox-api-client.test.ts +0 -108
  425. package/test/app/save-command-modal.test.tsx +0 -109
  426. package/test/app/secrets-view.test.tsx +0 -92
  427. package/test/app/settings-control-styles.test.tsx +0 -142
  428. package/test/app/settings-reset.e2e.test.ts +0 -726
  429. package/test/app/settings-sections.e2e.test.ts +0 -614
  430. package/test/app/shared-format.test.ts +0 -44
  431. package/test/app/shared-switch.test.ts +0 -69
  432. package/test/app/shell-mode-switching.e2e.test.ts +0 -840
  433. package/test/app/shell-mode-tab-memory.test.tsx +0 -58
  434. package/test/app/shell-overlays.test.tsx +0 -50
  435. package/test/app/shortcuts-overlay.test.tsx +0 -111
  436. package/test/app/sse-interruption.test.ts +0 -122
  437. package/test/app/startup-asset-missing.e2e.test.ts +0 -126
  438. package/test/app/startup-backend-missing.e2e.test.ts +0 -118
  439. package/test/app/startup-chat.e2e.test.ts +0 -322
  440. package/test/app/startup-conversation-restore.test.tsx +0 -381
  441. package/test/app/startup-failure-view.test.tsx +0 -103
  442. package/test/app/startup-onboarding.e2e.test.ts +0 -618
  443. package/test/app/startup-timeout.test.tsx +0 -80
  444. package/test/app/startup-token-401.e2e.test.ts +0 -103
  445. package/test/app/stream-helpers.test.ts +0 -46
  446. package/test/app/stream-popout-navigation.test.tsx +0 -41
  447. package/test/app/stream-status-bar.test.tsx +0 -89
  448. package/test/app/theme-toggle.test.tsx +0 -33
  449. package/test/app/training-api-client.test.ts +0 -128
  450. package/test/app/trajectories-view.test.tsx +0 -220
  451. package/test/app/triggers-api-client.test.ts +0 -77
  452. package/test/app/triggers-navigation.test.ts +0 -113
  453. package/test/app/triggers-view.e2e.test.ts +0 -675
  454. package/test/app/update-channel-lock.test.ts +0 -259
  455. package/test/app/vector-browser.async-cleanup.test.tsx +0 -367
  456. package/test/app/vector-browser.e2e.test.ts +0 -653
  457. package/test/app/vrm-stage.test.tsx +0 -351
  458. package/test/app/vrm-viewer.test.tsx +0 -298
  459. package/test/app/wallet-api-save-lock.test.ts +0 -299
  460. package/test/app/wallet-hooks.test.ts +0 -405
  461. package/test/app/wallet-ui-flows.e2e.test.ts +0 -556
  462. package/test/avatar/asset-url.test.ts +0 -90
  463. package/test/avatar/avatar-selector.test.ts +0 -173
  464. package/test/avatar/mixamo-vrm-rig-map.test.ts +0 -111
  465. package/test/avatar/voice-chat-streaming-text.test.ts +0 -96
  466. package/test/avatar/voice-chat.test.ts +0 -391
  467. package/test/browser-extension/README.md +0 -138
  468. package/test/browser-extension/test-harness.ts +0 -499
  469. package/test/capacitor-plugins.e2e.test.ts +0 -168
  470. package/test/test-types.ts +0 -5
  471. package/test/ui/command-palette-commands.test.ts +0 -57
  472. package/test/ui/ui-renderer.test.ts +0 -39
  473. package/test/utils/assistant-text.test.ts +0 -68
  474. package/test/utils/streaming-text.test.ts +0 -89
  475. package/tsconfig.build.json +0 -19
  476. package/tsconfig.json +0 -20
  477. package/tsconfig.typecheck.json +0 -12
  478. /package/{dist/App.d.ts → App.d.ts} +0 -0
  479. /package/{dist/App.d.ts.map → App.d.ts.map} +0 -0
  480. /package/{dist/App.js → App.js} +0 -0
  481. /package/{dist/actions → actions}/character.js +0 -0
  482. /package/{dist/actions → actions}/chat-helpers.d.ts +0 -0
  483. /package/{dist/actions → actions}/chat-helpers.d.ts.map +0 -0
  484. /package/{dist/actions → actions}/chat-helpers.js +0 -0
  485. /package/{dist/actions → actions}/cloud.js +0 -0
  486. /package/{dist/actions → actions}/index.d.ts +0 -0
  487. /package/{dist/actions → actions}/index.d.ts.map +0 -0
  488. /package/{dist/actions → actions}/index.js +0 -0
  489. /package/{dist/actions → actions}/onboarding.d.ts +0 -0
  490. /package/{dist/actions → actions}/onboarding.d.ts.map +0 -0
  491. /package/{dist/actions → actions}/onboarding.js +0 -0
  492. /package/{dist/actions → actions}/triggers.js +0 -0
  493. /package/{dist/api → api}/index.d.ts +0 -0
  494. /package/{dist/api → api}/index.d.ts.map +0 -0
  495. /package/{dist/api → api}/index.js +0 -0
  496. /package/{dist/autonomy → autonomy}/index.d.ts +0 -0
  497. /package/{dist/autonomy → autonomy}/index.d.ts.map +0 -0
  498. /package/{dist/autonomy → autonomy}/index.js +0 -0
  499. /package/{dist/bridge → bridge}/electrobun-rpc.d.ts +0 -0
  500. /package/{dist/bridge → bridge}/electrobun-rpc.d.ts.map +0 -0
  501. /package/{dist/bridge → bridge}/electrobun-runtime.d.ts +0 -0
  502. /package/{dist/bridge → bridge}/electrobun-runtime.d.ts.map +0 -0
  503. /package/{dist/bridge → bridge}/electrobun-runtime.js +0 -0
  504. /package/{dist/bridge → bridge}/index.d.ts +0 -0
  505. /package/{dist/bridge → bridge}/index.d.ts.map +0 -0
  506. /package/{dist/bridge → bridge}/index.js +0 -0
  507. /package/{dist/bridge → bridge}/native-plugins.d.ts +0 -0
  508. /package/{dist/bridge → bridge}/native-plugins.d.ts.map +0 -0
  509. /package/{dist/bridge → bridge}/native-plugins.js +0 -0
  510. /package/{dist/bridge → bridge}/storage-bridge.d.ts +0 -0
  511. /package/{dist/bridge → bridge}/storage-bridge.d.ts.map +0 -0
  512. /package/{dist/coding → coding}/index.d.ts +0 -0
  513. /package/{dist/coding → coding}/index.d.ts.map +0 -0
  514. /package/{dist/coding → coding}/index.js +0 -0
  515. /package/{dist/components → components}/AdvancedPageView.d.ts +0 -0
  516. /package/{dist/components → components}/AdvancedPageView.d.ts.map +0 -0
  517. /package/{dist/components → components}/AdvancedPageView.js +0 -0
  518. /package/{dist/components → components}/AgentActivityBox.d.ts +0 -0
  519. /package/{dist/components → components}/AgentActivityBox.d.ts.map +0 -0
  520. /package/{dist/components → components}/AgentActivityBox.js +0 -0
  521. /package/{dist/components → components}/ApiKeyConfig.d.ts +0 -0
  522. /package/{dist/components → components}/ApiKeyConfig.d.ts.map +0 -0
  523. /package/{dist/components → components}/ApiKeyConfig.js +0 -0
  524. /package/{dist/components → components}/AppsPageView.d.ts +0 -0
  525. /package/{dist/components → components}/AppsPageView.d.ts.map +0 -0
  526. /package/{dist/components → components}/AppsPageView.js +0 -0
  527. /package/{dist/components → components}/AppsView.d.ts +0 -0
  528. /package/{dist/components → components}/AppsView.d.ts.map +0 -0
  529. /package/{dist/components → components}/AppsView.js +0 -0
  530. /package/{dist/components → components}/AvatarLoader.d.ts +0 -0
  531. /package/{dist/components → components}/AvatarLoader.d.ts.map +0 -0
  532. /package/{dist/components → components}/AvatarLoader.js +0 -0
  533. /package/{dist/components → components}/AvatarSelector.d.ts +0 -0
  534. /package/{dist/components → components}/AvatarSelector.d.ts.map +0 -0
  535. /package/{dist/components → components}/AvatarSelector.js +0 -0
  536. /package/{dist/components → components}/BscTradePanel.d.ts +0 -0
  537. /package/{dist/components → components}/BscTradePanel.d.ts.map +0 -0
  538. /package/{dist/components → components}/BscTradePanel.js +0 -0
  539. /package/{dist/components → components}/BugReportModal.d.ts +0 -0
  540. /package/{dist/components → components}/BugReportModal.d.ts.map +0 -0
  541. /package/{dist/components → components}/CharacterView.d.ts +0 -0
  542. /package/{dist/components → components}/CharacterView.d.ts.map +0 -0
  543. /package/{dist/components → components}/CharacterView.js +0 -0
  544. /package/{dist/components → components}/ChatAvatar.d.ts +0 -0
  545. /package/{dist/components → components}/ChatAvatar.d.ts.map +0 -0
  546. /package/{dist/components → components}/ChatAvatar.js +0 -0
  547. /package/{dist/components → components}/ChatComposer.d.ts +0 -0
  548. /package/{dist/components → components}/ChatComposer.d.ts.map +0 -0
  549. /package/{dist/components → components}/ChatComposer.js +0 -0
  550. /package/{dist/components → components}/ChatMessage.d.ts +0 -0
  551. /package/{dist/components → components}/ChatMessage.d.ts.map +0 -0
  552. /package/{dist/components → components}/ChatMessage.js +0 -0
  553. /package/{dist/components → components}/ChatModalView.d.ts +0 -0
  554. /package/{dist/components → components}/ChatModalView.d.ts.map +0 -0
  555. /package/{dist/components → components}/ChatModalView.js +0 -0
  556. /package/{dist/components → components}/ChatView.d.ts +0 -0
  557. /package/{dist/components → components}/ChatView.d.ts.map +0 -0
  558. /package/{dist/components → components}/ChatView.js +0 -0
  559. /package/{dist/components → components}/CloudSourceControls.d.ts +0 -0
  560. /package/{dist/components → components}/CloudSourceControls.d.ts.map +0 -0
  561. /package/{dist/components → components}/CloudSourceControls.js +0 -0
  562. /package/{dist/components → components}/CodingAgentSettingsSection.d.ts +0 -0
  563. /package/{dist/components → components}/CodingAgentSettingsSection.d.ts.map +0 -0
  564. /package/{dist/components → components}/CodingAgentSettingsSection.js +0 -0
  565. /package/{dist/components → components}/CommandPalette.d.ts +0 -0
  566. /package/{dist/components → components}/CommandPalette.d.ts.map +0 -0
  567. /package/{dist/components → components}/CompanionSceneHost.d.ts +0 -0
  568. /package/{dist/components → components}/CompanionSceneHost.d.ts.map +0 -0
  569. /package/{dist/components → components}/CompanionShell.d.ts +0 -0
  570. /package/{dist/components → components}/CompanionShell.d.ts.map +0 -0
  571. /package/{dist/components → components}/CompanionShell.js +0 -0
  572. /package/{dist/components → components}/CompanionView.d.ts +0 -0
  573. /package/{dist/components → components}/CompanionView.d.ts.map +0 -0
  574. /package/{dist/components → components}/CompanionView.js +0 -0
  575. /package/{dist/components → components}/ConfigPageView.d.ts +0 -0
  576. /package/{dist/components → components}/ConfigPageView.d.ts.map +0 -0
  577. /package/{dist/components → components}/ConfigPageView.js +0 -0
  578. /package/{dist/components → components}/ConfigSaveFooter.d.ts +0 -0
  579. /package/{dist/components → components}/ConfigSaveFooter.d.ts.map +0 -0
  580. /package/{dist/components → components}/ConfigSaveFooter.js +0 -0
  581. /package/{dist/components → components}/ConfirmModal.d.ts +0 -0
  582. /package/{dist/components → components}/ConfirmModal.d.ts.map +0 -0
  583. /package/{dist/components → components}/ConfirmModal.js +0 -0
  584. /package/{dist/components → components}/ConnectionFailedBanner.d.ts +0 -0
  585. /package/{dist/components → components}/ConnectionFailedBanner.d.ts.map +0 -0
  586. /package/{dist/components → components}/ConnectionFailedBanner.js +0 -0
  587. /package/{dist/components → components}/ConnectorsPageView.d.ts +0 -0
  588. /package/{dist/components → components}/ConnectorsPageView.d.ts.map +0 -0
  589. /package/{dist/components → components}/ConnectorsPageView.js +0 -0
  590. /package/{dist/components → components}/ConversationsSidebar.d.ts +0 -0
  591. /package/{dist/components → components}/ConversationsSidebar.d.ts.map +0 -0
  592. /package/{dist/components → components}/ConversationsSidebar.js +0 -0
  593. /package/{dist/components → components}/CustomActionEditor.d.ts +0 -0
  594. /package/{dist/components → components}/CustomActionEditor.d.ts.map +0 -0
  595. /package/{dist/components → components}/CustomActionEditor.js +0 -0
  596. /package/{dist/components → components}/CustomActionsPanel.d.ts +0 -0
  597. /package/{dist/components → components}/CustomActionsPanel.d.ts.map +0 -0
  598. /package/{dist/components → components}/CustomActionsPanel.js +0 -0
  599. /package/{dist/components → components}/CustomActionsView.d.ts +0 -0
  600. /package/{dist/components → components}/CustomActionsView.d.ts.map +0 -0
  601. /package/{dist/components → components}/CustomActionsView.js +0 -0
  602. /package/{dist/components → components}/DatabasePageView.d.ts +0 -0
  603. /package/{dist/components → components}/DatabasePageView.d.ts.map +0 -0
  604. /package/{dist/components → components}/DatabasePageView.js +0 -0
  605. /package/{dist/components → components}/DatabaseView.d.ts +0 -0
  606. /package/{dist/components → components}/DatabaseView.d.ts.map +0 -0
  607. /package/{dist/components → components}/DatabaseView.js +0 -0
  608. /package/{dist/components → components}/ElizaCloudDashboard.d.ts +0 -0
  609. /package/{dist/components → components}/ElizaCloudDashboard.d.ts.map +0 -0
  610. /package/{dist/components → components}/EmotePicker.d.ts +0 -0
  611. /package/{dist/components → components}/EmotePicker.d.ts.map +0 -0
  612. /package/{dist/components → components}/ErrorBoundary.d.ts +0 -0
  613. /package/{dist/components → components}/ErrorBoundary.d.ts.map +0 -0
  614. /package/{dist/components → components}/ErrorBoundary.js +0 -0
  615. /package/{dist/components → components}/FineTuningView.d.ts +0 -0
  616. /package/{dist/components → components}/FineTuningView.d.ts.map +0 -0
  617. /package/{dist/components → components}/FineTuningView.js +0 -0
  618. /package/{dist/components → components}/GameView.d.ts +0 -0
  619. /package/{dist/components → components}/GameView.d.ts.map +0 -0
  620. /package/{dist/components → components}/GameView.js +0 -0
  621. /package/{dist/components → components}/GameViewOverlay.d.ts +0 -0
  622. /package/{dist/components → components}/GameViewOverlay.d.ts.map +0 -0
  623. /package/{dist/components → components}/GameViewOverlay.js +0 -0
  624. /package/{dist/components → components}/GlobalEmoteOverlay.d.ts +0 -0
  625. /package/{dist/components → components}/GlobalEmoteOverlay.d.ts.map +0 -0
  626. /package/{dist/components → components}/Header.d.ts +0 -0
  627. /package/{dist/components → components}/Header.d.ts.map +0 -0
  628. /package/{dist/components → components}/Header.js +0 -0
  629. /package/{dist/components → components}/HeartbeatsView.d.ts +0 -0
  630. /package/{dist/components → components}/HeartbeatsView.d.ts.map +0 -0
  631. /package/{dist/components → components}/HeartbeatsView.js +0 -0
  632. /package/{dist/components → components}/InventoryView.d.ts +0 -0
  633. /package/{dist/components → components}/InventoryView.d.ts.map +0 -0
  634. /package/{dist/components → components}/InventoryView.js +0 -0
  635. /package/{dist/components → components}/KnowledgeView.d.ts +0 -0
  636. /package/{dist/components → components}/KnowledgeView.d.ts.map +0 -0
  637. /package/{dist/components → components}/KnowledgeView.js +0 -0
  638. /package/{dist/components → components}/LanguageDropdown.d.ts +0 -0
  639. /package/{dist/components → components}/LanguageDropdown.d.ts.map +0 -0
  640. /package/{dist/components → components}/LanguageDropdown.js +0 -0
  641. /package/{dist/components → components}/LifoMonitorPanel.d.ts +0 -0
  642. /package/{dist/components → components}/LifoMonitorPanel.d.ts.map +0 -0
  643. /package/{dist/components → components}/LifoMonitorPanel.js +0 -0
  644. /package/{dist/components → components}/LifoSandboxView.d.ts +0 -0
  645. /package/{dist/components → components}/LifoSandboxView.d.ts.map +0 -0
  646. /package/{dist/components → components}/LifoSandboxView.js +0 -0
  647. /package/{dist/components → components}/LoadingScreen.d.ts +0 -0
  648. /package/{dist/components → components}/LoadingScreen.d.ts.map +0 -0
  649. /package/{dist/components → components}/LoadingScreen.js +0 -0
  650. /package/{dist/components → components}/LogsPageView.d.ts +0 -0
  651. /package/{dist/components → components}/LogsPageView.d.ts.map +0 -0
  652. /package/{dist/components → components}/LogsPageView.js +0 -0
  653. /package/{dist/components → components}/LogsView.d.ts +0 -0
  654. /package/{dist/components → components}/LogsView.d.ts.map +0 -0
  655. /package/{dist/components → components}/LogsView.js +0 -0
  656. /package/{dist/components → components}/MediaGalleryView.d.ts +0 -0
  657. /package/{dist/components → components}/MediaGalleryView.d.ts.map +0 -0
  658. /package/{dist/components → components}/MediaGalleryView.js +0 -0
  659. /package/{dist/components → components}/MediaSettingsSection.d.ts +0 -0
  660. /package/{dist/components → components}/MediaSettingsSection.d.ts.map +0 -0
  661. /package/{dist/components → components}/MediaSettingsSection.js +0 -0
  662. /package/{dist/components → components}/MessageContent.d.ts +0 -0
  663. /package/{dist/components → components}/MessageContent.d.ts.map +0 -0
  664. /package/{dist/components → components}/MessageContent.js +0 -0
  665. /package/{dist/components → components}/OnboardingWizard.d.ts +0 -0
  666. /package/{dist/components → components}/OnboardingWizard.d.ts.map +0 -0
  667. /package/{dist/components → components}/OnboardingWizard.js +0 -0
  668. /package/{dist/components → components}/PairingView.d.ts +0 -0
  669. /package/{dist/components → components}/PairingView.d.ts.map +0 -0
  670. /package/{dist/components → components}/PermissionsSection.d.ts +0 -0
  671. /package/{dist/components → components}/PermissionsSection.d.ts.map +0 -0
  672. /package/{dist/components → components}/PermissionsSection.js +0 -0
  673. /package/{dist/components → components}/PluginsPageView.d.ts +0 -0
  674. /package/{dist/components → components}/PluginsPageView.d.ts.map +0 -0
  675. /package/{dist/components → components}/PluginsPageView.js +0 -0
  676. /package/{dist/components → components}/PluginsView.d.ts +0 -0
  677. /package/{dist/components → components}/PluginsView.d.ts.map +0 -0
  678. /package/{dist/components → components}/PluginsView.js +0 -0
  679. /package/{dist/components → components}/ProviderSwitcher.d.ts +0 -0
  680. /package/{dist/components → components}/ProviderSwitcher.d.ts.map +0 -0
  681. /package/{dist/components → components}/RestartBanner.d.ts +0 -0
  682. /package/{dist/components → components}/RestartBanner.d.ts.map +0 -0
  683. /package/{dist/components → components}/RestartBanner.js +0 -0
  684. /package/{dist/components → components}/RuntimeView.d.ts +0 -0
  685. /package/{dist/components → components}/RuntimeView.d.ts.map +0 -0
  686. /package/{dist/components → components}/RuntimeView.js +0 -0
  687. /package/{dist/components → components}/SaveCommandModal.d.ts +0 -0
  688. /package/{dist/components → components}/SaveCommandModal.d.ts.map +0 -0
  689. /package/{dist/components → components}/SaveCommandModal.js +0 -0
  690. /package/{dist/components → components}/SecretsView.d.ts +0 -0
  691. /package/{dist/components → components}/SecretsView.d.ts.map +0 -0
  692. /package/{dist/components → components}/SettingsView.d.ts +0 -0
  693. /package/{dist/components → components}/SettingsView.d.ts.map +0 -0
  694. /package/{dist/components → components}/SettingsView.js +0 -0
  695. /package/{dist/components → components}/ShellOverlays.d.ts +0 -0
  696. /package/{dist/components → components}/ShellOverlays.d.ts.map +0 -0
  697. /package/{dist/components → components}/ShellOverlays.js +0 -0
  698. /package/{dist/components → components}/ShortcutsOverlay.d.ts +0 -0
  699. /package/{dist/components → components}/ShortcutsOverlay.d.ts.map +0 -0
  700. /package/{dist/components → components}/ShortcutsOverlay.js +0 -0
  701. /package/{dist/components → components}/SkillsView.d.ts +0 -0
  702. /package/{dist/components → components}/SkillsView.d.ts.map +0 -0
  703. /package/{dist/components → components}/SkillsView.js +0 -0
  704. /package/{dist/components → components}/StartupFailureView.d.ts +0 -0
  705. /package/{dist/components → components}/StartupFailureView.d.ts.map +0 -0
  706. /package/{dist/components → components}/StreamView.d.ts +0 -0
  707. /package/{dist/components → components}/StreamView.d.ts.map +0 -0
  708. /package/{dist/components → components}/StripeEmbeddedCheckout.d.ts +0 -0
  709. /package/{dist/components → components}/StripeEmbeddedCheckout.d.ts.map +0 -0
  710. /package/{dist/components → components}/SubscriptionStatus.d.ts +0 -0
  711. /package/{dist/components → components}/SubscriptionStatus.d.ts.map +0 -0
  712. /package/{dist/components → components}/SystemWarningBanner.d.ts +0 -0
  713. /package/{dist/components → components}/SystemWarningBanner.d.ts.map +0 -0
  714. /package/{dist/components → components}/SystemWarningBanner.js +0 -0
  715. /package/{dist/components → components}/ThemeToggle.d.ts +0 -0
  716. /package/{dist/components → components}/ThemeToggle.d.ts.map +0 -0
  717. /package/{dist/components → components}/ThemeToggle.js +0 -0
  718. /package/{dist/components → components}/TrajectoriesView.d.ts +0 -0
  719. /package/{dist/components → components}/TrajectoriesView.d.ts.map +0 -0
  720. /package/{dist/components → components}/TrajectoriesView.js +0 -0
  721. /package/{dist/components → components}/TrajectoryDetailView.d.ts +0 -0
  722. /package/{dist/components → components}/TrajectoryDetailView.d.ts.map +0 -0
  723. /package/{dist/components → components}/TrajectoryDetailView.js +0 -0
  724. /package/{dist/components → components}/TriggersView.d.ts +0 -0
  725. /package/{dist/components → components}/TriggersView.d.ts.map +0 -0
  726. /package/{dist/components → components}/TriggersView.js +0 -0
  727. /package/{dist/components → components}/VectorBrowserView.d.ts +0 -0
  728. /package/{dist/components → components}/VectorBrowserView.d.ts.map +0 -0
  729. /package/{dist/components → components}/VectorBrowserView.js +0 -0
  730. /package/{dist/components → components}/VoiceConfigView.d.ts +0 -0
  731. /package/{dist/components → components}/VoiceConfigView.d.ts.map +0 -0
  732. /package/{dist/components → components}/VrmStage.d.ts +0 -0
  733. /package/{dist/components → components}/VrmStage.d.ts.map +0 -0
  734. /package/{dist/components → components}/VrmStage.js +0 -0
  735. /package/{dist/components → components}/WhatsAppQrOverlay.d.ts +0 -0
  736. /package/{dist/components → components}/WhatsAppQrOverlay.d.ts.map +0 -0
  737. /package/{dist/components → components}/WhatsAppQrOverlay.js +0 -0
  738. /package/{dist/components → components}/apps/AppDetailPane.d.ts +0 -0
  739. /package/{dist/components → components}/apps/AppDetailPane.d.ts.map +0 -0
  740. /package/{dist/components → components}/apps/AppDetailPane.js +0 -0
  741. /package/{dist/components → components}/apps/AppsCatalogGrid.d.ts +0 -0
  742. /package/{dist/components → components}/apps/AppsCatalogGrid.d.ts.map +0 -0
  743. /package/{dist/components → components}/apps/AppsCatalogGrid.js +0 -0
  744. /package/{dist/components → components}/apps/extensions/registry.d.ts +0 -0
  745. /package/{dist/components → components}/apps/extensions/registry.d.ts.map +0 -0
  746. /package/{dist/components → components}/apps/extensions/registry.js +0 -0
  747. /package/{dist/components → components}/apps/extensions/types.d.ts +0 -0
  748. /package/{dist/components → components}/apps/extensions/types.d.ts.map +0 -0
  749. /package/{dist/components → components}/apps/extensions/types.js +0 -0
  750. /package/{dist/components → components}/apps/helpers.d.ts +0 -0
  751. /package/{dist/components → components}/apps/helpers.d.ts.map +0 -0
  752. /package/{dist/components → components}/apps/helpers.js +0 -0
  753. /package/{dist/components → components}/avatar/VrmAnimationLoader.d.ts +0 -0
  754. /package/{dist/components → components}/avatar/VrmAnimationLoader.d.ts.map +0 -0
  755. /package/{dist/components → components}/avatar/VrmAnimationLoader.js +0 -0
  756. /package/{dist/components → components}/avatar/VrmBlinkController.d.ts +0 -0
  757. /package/{dist/components → components}/avatar/VrmBlinkController.d.ts.map +0 -0
  758. /package/{dist/components → components}/avatar/VrmBlinkController.js +0 -0
  759. /package/{dist/components → components}/avatar/VrmCameraManager.d.ts +0 -0
  760. /package/{dist/components → components}/avatar/VrmCameraManager.d.ts.map +0 -0
  761. /package/{dist/components → components}/avatar/VrmCameraManager.js +0 -0
  762. /package/{dist/components → components}/avatar/VrmEngine.d.ts +0 -0
  763. /package/{dist/components → components}/avatar/VrmEngine.d.ts.map +0 -0
  764. /package/{dist/components → components}/avatar/VrmFootShadow.d.ts +0 -0
  765. /package/{dist/components → components}/avatar/VrmFootShadow.d.ts.map +0 -0
  766. /package/{dist/components → components}/avatar/VrmFootShadow.js +0 -0
  767. /package/{dist/components → components}/avatar/mixamoVRMRigMap.d.ts +0 -0
  768. /package/{dist/components → components}/avatar/mixamoVRMRigMap.d.ts.map +0 -0
  769. /package/{dist/components → components}/avatar/mixamoVRMRigMap.js +0 -0
  770. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.d.ts +0 -0
  771. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.d.ts.map +0 -0
  772. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.js +0 -0
  773. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.d.ts +0 -0
  774. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.d.ts.map +0 -0
  775. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.js +0 -0
  776. /package/{dist/components → components}/chainConfig.d.ts +0 -0
  777. /package/{dist/components → components}/chainConfig.d.ts.map +0 -0
  778. /package/{dist/components → components}/chainConfig.js +0 -0
  779. /package/{dist/components → components}/companion/CompanionHeader.d.ts +0 -0
  780. /package/{dist/components → components}/companion/CompanionHeader.d.ts.map +0 -0
  781. /package/{dist/components → components}/companion/CompanionHeader.js +0 -0
  782. /package/{dist/components → components}/companion/CompanionSceneHost.d.ts +0 -0
  783. /package/{dist/components → components}/companion/CompanionSceneHost.d.ts.map +0 -0
  784. /package/{dist/components → components}/companion/CompanionSceneHost.js +0 -0
  785. /package/{dist/components → components}/companion/VrmStage.d.ts +0 -0
  786. /package/{dist/components → components}/companion/VrmStage.d.ts.map +0 -0
  787. /package/{dist/components → components}/companion/VrmStage.js +0 -0
  788. /package/{dist/components → components}/companion-shell-styles.d.ts +0 -0
  789. /package/{dist/components → components}/companion-shell-styles.d.ts.map +0 -0
  790. /package/{dist/components → components}/companion-shell-styles.js +0 -0
  791. /package/{dist/components → components}/confirm-delete-control.d.ts +0 -0
  792. /package/{dist/components → components}/confirm-delete-control.d.ts.map +0 -0
  793. /package/{dist/components → components}/confirm-delete-control.js +0 -0
  794. /package/{dist/components → components}/conversations/ConversationListItem.d.ts +0 -0
  795. /package/{dist/components → components}/conversations/ConversationListItem.d.ts.map +0 -0
  796. /package/{dist/components → components}/conversations/ConversationListItem.js +0 -0
  797. /package/{dist/components → components}/conversations/conversation-utils.d.ts +0 -0
  798. /package/{dist/components → components}/conversations/conversation-utils.d.ts.map +0 -0
  799. /package/{dist/components → components}/conversations/conversation-utils.js +0 -0
  800. /package/{dist/components → components}/format.d.ts.map +0 -0
  801. /package/{dist/components → components}/index.d.ts +0 -0
  802. /package/{dist/components → components}/index.d.ts.map +0 -0
  803. /package/{dist/components → components}/index.js +0 -0
  804. /package/{dist/components → components}/inventory/CopyableAddress.d.ts +0 -0
  805. /package/{dist/components → components}/inventory/CopyableAddress.d.ts.map +0 -0
  806. /package/{dist/components → components}/inventory/CopyableAddress.js +0 -0
  807. /package/{dist/components → components}/inventory/InventoryToolbar.d.ts +0 -0
  808. /package/{dist/components → components}/inventory/InventoryToolbar.d.ts.map +0 -0
  809. /package/{dist/components → components}/inventory/InventoryToolbar.js +0 -0
  810. /package/{dist/components → components}/inventory/NftGrid.d.ts +0 -0
  811. /package/{dist/components → components}/inventory/NftGrid.d.ts.map +0 -0
  812. /package/{dist/components → components}/inventory/NftGrid.js +0 -0
  813. /package/{dist/components → components}/inventory/TokenLogo.d.ts +0 -0
  814. /package/{dist/components → components}/inventory/TokenLogo.d.ts.map +0 -0
  815. /package/{dist/components → components}/inventory/TokenLogo.js +0 -0
  816. /package/{dist/components → components}/inventory/TokensTable.d.ts +0 -0
  817. /package/{dist/components → components}/inventory/TokensTable.d.ts.map +0 -0
  818. /package/{dist/components → components}/inventory/TokensTable.js +0 -0
  819. /package/{dist/components → components}/inventory/constants.d.ts +0 -0
  820. /package/{dist/components → components}/inventory/constants.d.ts.map +0 -0
  821. /package/{dist/components → components}/inventory/constants.js +0 -0
  822. /package/{dist/components → components}/inventory/index.d.ts +0 -0
  823. /package/{dist/components → components}/inventory/index.d.ts.map +0 -0
  824. /package/{dist/components → components}/inventory/index.js +0 -0
  825. /package/{dist/components → components}/inventory/media-url.d.ts +0 -0
  826. /package/{dist/components → components}/inventory/media-url.d.ts.map +0 -0
  827. /package/{dist/components → components}/inventory/media-url.js +0 -0
  828. /package/{dist/components → components}/inventory/useInventoryData.d.ts +0 -0
  829. /package/{dist/components → components}/inventory/useInventoryData.d.ts.map +0 -0
  830. /package/{dist/components → components}/inventory/useInventoryData.js +0 -0
  831. /package/{dist/components → components}/knowledge-upload-image.d.ts +0 -0
  832. /package/{dist/components → components}/knowledge-upload-image.d.ts.map +0 -0
  833. /package/{dist/components → components}/knowledge-upload-image.js +0 -0
  834. /package/{dist/components → components}/labels.d.ts +0 -0
  835. /package/{dist/components → components}/labels.d.ts.map +0 -0
  836. /package/{dist/components → components}/labels.js +0 -0
  837. /package/{dist/components → components}/onboarding/ActivateStep.d.ts +0 -0
  838. /package/{dist/components → components}/onboarding/ActivateStep.d.ts.map +0 -0
  839. /package/{dist/components → components}/onboarding/ActivateStep.js +0 -0
  840. /package/{dist/components → components}/onboarding/ConnectionStep.d.ts +0 -0
  841. /package/{dist/components → components}/onboarding/ConnectionStep.d.ts.map +0 -0
  842. /package/{dist/components → components}/onboarding/ConnectionStep.js +0 -0
  843. /package/{dist/components → components}/onboarding/IdentityStep.d.ts +0 -0
  844. /package/{dist/components → components}/onboarding/IdentityStep.d.ts.map +0 -0
  845. /package/{dist/components → components}/onboarding/IdentityStep.js +0 -0
  846. /package/{dist/components → components}/onboarding/OnboardingPanel.d.ts +0 -0
  847. /package/{dist/components → components}/onboarding/OnboardingPanel.d.ts.map +0 -0
  848. /package/{dist/components → components}/onboarding/OnboardingPanel.js +0 -0
  849. /package/{dist/components → components}/onboarding/OnboardingStepNav.d.ts +0 -0
  850. /package/{dist/components → components}/onboarding/OnboardingStepNav.d.ts.map +0 -0
  851. /package/{dist/components → components}/onboarding/OnboardingStepNav.js +0 -0
  852. /package/{dist/components → components}/onboarding/PermissionsStep.d.ts +0 -0
  853. /package/{dist/components → components}/onboarding/PermissionsStep.d.ts.map +0 -0
  854. /package/{dist/components → components}/onboarding/PermissionsStep.js +0 -0
  855. /package/{dist/components → components}/onboarding/RpcStep.d.ts +0 -0
  856. /package/{dist/components → components}/onboarding/RpcStep.d.ts.map +0 -0
  857. /package/{dist/components → components}/onboarding/RpcStep.js +0 -0
  858. /package/{dist/components → components}/permissions/PermissionIcon.d.ts +0 -0
  859. /package/{dist/components → components}/permissions/PermissionIcon.d.ts.map +0 -0
  860. /package/{dist/components → components}/permissions/PermissionIcon.js +0 -0
  861. /package/{dist/components → components}/permissions/StreamingPermissions.d.ts +0 -0
  862. /package/{dist/components → components}/permissions/StreamingPermissions.d.ts.map +0 -0
  863. /package/{dist/components → components}/plugins/showcase-data.d.ts +0 -0
  864. /package/{dist/components → components}/plugins/showcase-data.d.ts.map +0 -0
  865. /package/{dist/components → components}/plugins/showcase-data.js +0 -0
  866. /package/{dist/components → components}/shared/ShellHeaderControls.d.ts +0 -0
  867. /package/{dist/components → components}/shared/ShellHeaderControls.d.ts.map +0 -0
  868. /package/{dist/components → components}/shared/ShellHeaderControls.js +0 -0
  869. /package/{dist/components → components}/shared-companion-scene-context.d.ts +0 -0
  870. /package/{dist/components → components}/shared-companion-scene-context.d.ts.map +0 -0
  871. /package/{dist/components → components}/shared-companion-scene-context.js +0 -0
  872. /package/{dist/components → components}/skeletons.d.ts +0 -0
  873. /package/{dist/components → components}/skeletons.d.ts.map +0 -0
  874. /package/{dist/components → components}/skeletons.js +0 -0
  875. /package/{dist/components → components}/stream/ActivityFeed.d.ts +0 -0
  876. /package/{dist/components → components}/stream/ActivityFeed.d.ts.map +0 -0
  877. /package/{dist/components → components}/stream/ActivityFeed.js +0 -0
  878. /package/{dist/components → components}/stream/AvatarPip.d.ts +0 -0
  879. /package/{dist/components → components}/stream/AvatarPip.d.ts.map +0 -0
  880. /package/{dist/components → components}/stream/AvatarPip.js +0 -0
  881. /package/{dist/components → components}/stream/ChatContent.d.ts +0 -0
  882. /package/{dist/components → components}/stream/ChatContent.d.ts.map +0 -0
  883. /package/{dist/components → components}/stream/ChatContent.js +0 -0
  884. /package/{dist/components → components}/stream/ChatTicker.d.ts +0 -0
  885. /package/{dist/components → components}/stream/ChatTicker.d.ts.map +0 -0
  886. /package/{dist/components → components}/stream/ChatTicker.js +0 -0
  887. /package/{dist/components → components}/stream/IdleContent.d.ts +0 -0
  888. /package/{dist/components → components}/stream/IdleContent.d.ts.map +0 -0
  889. /package/{dist/components → components}/stream/IdleContent.js +0 -0
  890. /package/{dist/components → components}/stream/StatusBar.d.ts +0 -0
  891. /package/{dist/components → components}/stream/StatusBar.d.ts.map +0 -0
  892. /package/{dist/components → components}/stream/StreamSettings.d.ts +0 -0
  893. /package/{dist/components → components}/stream/StreamSettings.d.ts.map +0 -0
  894. /package/{dist/components → components}/stream/StreamSettings.js +0 -0
  895. /package/{dist/components → components}/stream/StreamTerminal.d.ts +0 -0
  896. /package/{dist/components → components}/stream/StreamTerminal.d.ts.map +0 -0
  897. /package/{dist/components → components}/stream/StreamTerminal.js +0 -0
  898. /package/{dist/components → components}/stream/StreamVoiceConfig.d.ts +0 -0
  899. /package/{dist/components → components}/stream/StreamVoiceConfig.d.ts.map +0 -0
  900. /package/{dist/components → components}/stream/StreamVoiceConfig.js +0 -0
  901. /package/{dist/components → components}/stream/helpers.d.ts +0 -0
  902. /package/{dist/components → components}/stream/helpers.d.ts.map +0 -0
  903. /package/{dist/components → components}/stream/helpers.js +0 -0
  904. /package/{dist/components → components}/stream/overlays/OverlayLayer.d.ts +0 -0
  905. /package/{dist/components → components}/stream/overlays/OverlayLayer.d.ts.map +0 -0
  906. /package/{dist/components → components}/stream/overlays/OverlayLayer.js +0 -0
  907. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.d.ts +0 -0
  908. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.d.ts.map +0 -0
  909. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.js +0 -0
  910. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.d.ts +0 -0
  911. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.d.ts.map +0 -0
  912. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.js +0 -0
  913. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.d.ts +0 -0
  914. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.d.ts.map +0 -0
  915. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.js +0 -0
  916. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.d.ts +0 -0
  917. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.d.ts.map +0 -0
  918. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.js +0 -0
  919. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.d.ts +0 -0
  920. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.d.ts.map +0 -0
  921. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.js +0 -0
  922. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.d.ts +0 -0
  923. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.d.ts.map +0 -0
  924. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.js +0 -0
  925. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.d.ts +0 -0
  926. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.d.ts.map +0 -0
  927. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.js +0 -0
  928. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.d.ts +0 -0
  929. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.d.ts.map +0 -0
  930. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.js +0 -0
  931. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.d.ts +0 -0
  932. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.d.ts.map +0 -0
  933. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.js +0 -0
  934. /package/{dist/components → components}/stream/overlays/built-in/index.d.ts +0 -0
  935. /package/{dist/components → components}/stream/overlays/built-in/index.d.ts.map +0 -0
  936. /package/{dist/components → components}/stream/overlays/built-in/index.js +0 -0
  937. /package/{dist/components → components}/stream/overlays/registry.d.ts +0 -0
  938. /package/{dist/components → components}/stream/overlays/registry.d.ts.map +0 -0
  939. /package/{dist/components → components}/stream/overlays/registry.js +0 -0
  940. /package/{dist/components → components}/stream/overlays/types.d.ts +0 -0
  941. /package/{dist/components → components}/stream/overlays/types.d.ts.map +0 -0
  942. /package/{dist/components → components}/stream/overlays/types.js +0 -0
  943. /package/{dist/components → components}/stream/overlays/useOverlayLayout.d.ts.map +0 -0
  944. /package/{dist/components → components}/trajectory-format.d.ts +0 -0
  945. /package/{dist/components → components}/trajectory-format.d.ts.map +0 -0
  946. /package/{dist/components → components}/trajectory-format.js +0 -0
  947. /package/{dist/components → components}/ui-badges.d.ts +0 -0
  948. /package/{dist/components → components}/ui-badges.d.ts.map +0 -0
  949. /package/{dist/components → components}/ui-badges.js +0 -0
  950. /package/{dist/components → components}/ui-switch.d.ts +0 -0
  951. /package/{dist/components → components}/ui-switch.d.ts.map +0 -0
  952. /package/{dist/components → components}/ui-switch.js +0 -0
  953. /package/{dist/components → components}/vector-browser-three.d.ts +0 -0
  954. /package/{dist/components → components}/vector-browser-three.d.ts.map +0 -0
  955. /package/{dist/components → components}/vector-browser-three.js +0 -0
  956. /package/{dist/config → config}/config-catalog.d.ts +0 -0
  957. /package/{dist/config → config}/config-catalog.d.ts.map +0 -0
  958. /package/{dist/config → config}/config-catalog.js +0 -0
  959. /package/{dist/config → config}/config-field.d.ts +0 -0
  960. /package/{dist/config → config}/config-field.d.ts.map +0 -0
  961. /package/{dist/config → config}/config-field.js +0 -0
  962. /package/{dist/config → config}/config-renderer.d.ts +0 -0
  963. /package/{dist/config → config}/config-renderer.d.ts.map +0 -0
  964. /package/{dist/config → config}/config-renderer.js +0 -0
  965. /package/{dist/config → config}/index.d.ts +0 -0
  966. /package/{dist/config → config}/index.d.ts.map +0 -0
  967. /package/{dist/config → config}/index.js +0 -0
  968. /package/{dist/config → config}/ui-renderer.d.ts +0 -0
  969. /package/{dist/config → config}/ui-renderer.d.ts.map +0 -0
  970. /package/{dist/config → config}/ui-renderer.js +0 -0
  971. /package/{dist/config → config}/ui-spec.d.ts +0 -0
  972. /package/{dist/config → config}/ui-spec.d.ts.map +0 -0
  973. /package/{dist/config → config}/ui-spec.js +0 -0
  974. /package/{dist/hooks → hooks}/index.d.ts +0 -0
  975. /package/{dist/hooks → hooks}/index.d.ts.map +0 -0
  976. /package/{dist/hooks → hooks}/index.js +0 -0
  977. /package/{dist/hooks → hooks}/useBugReport.d.ts +0 -0
  978. /package/{dist/hooks → hooks}/useBugReport.d.ts.map +0 -0
  979. /package/{dist/hooks → hooks}/useBugReport.js +0 -0
  980. /package/{dist/hooks → hooks}/useCanvasWindow.d.ts +0 -0
  981. /package/{dist/hooks → hooks}/useCanvasWindow.d.ts.map +0 -0
  982. /package/{dist/hooks → hooks}/useCanvasWindow.js +0 -0
  983. /package/{dist/hooks → hooks}/useChatAvatarVoice.d.ts +0 -0
  984. /package/{dist/hooks → hooks}/useChatAvatarVoice.d.ts.map +0 -0
  985. /package/{dist/hooks → hooks}/useChatAvatarVoice.js +0 -0
  986. /package/{dist/hooks → hooks}/useContextMenu.d.ts +0 -0
  987. /package/{dist/hooks → hooks}/useContextMenu.d.ts.map +0 -0
  988. /package/{dist/hooks → hooks}/useContextMenu.js +0 -0
  989. /package/{dist/hooks → hooks}/useKeyboardShortcuts.d.ts +0 -0
  990. /package/{dist/hooks → hooks}/useKeyboardShortcuts.d.ts.map +0 -0
  991. /package/{dist/hooks → hooks}/useKeyboardShortcuts.js +0 -0
  992. /package/{dist/hooks → hooks}/useLifoSync.d.ts +0 -0
  993. /package/{dist/hooks → hooks}/useLifoSync.d.ts.map +0 -0
  994. /package/{dist/hooks → hooks}/useLifoSync.js +0 -0
  995. /package/{dist/hooks → hooks}/useMemoryMonitor.d.ts +0 -0
  996. /package/{dist/hooks → hooks}/useMemoryMonitor.d.ts.map +0 -0
  997. /package/{dist/hooks → hooks}/useMemoryMonitor.js +0 -0
  998. /package/{dist/hooks → hooks}/useRenderGuard.d.ts +0 -0
  999. /package/{dist/hooks → hooks}/useRenderGuard.d.ts.map +0 -0
  1000. /package/{dist/hooks → hooks}/useRenderGuard.js +0 -0
  1001. /package/{dist/hooks → hooks}/useRetakeCapture.d.ts +0 -0
  1002. /package/{dist/hooks → hooks}/useRetakeCapture.d.ts.map +0 -0
  1003. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.d.ts +0 -0
  1004. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.d.ts.map +0 -0
  1005. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.js +0 -0
  1006. /package/{dist/hooks → hooks}/useTimeout.d.ts +0 -0
  1007. /package/{dist/hooks → hooks}/useTimeout.d.ts.map +0 -0
  1008. /package/{dist/hooks → hooks}/useTimeout.js +0 -0
  1009. /package/{dist/hooks → hooks}/useVoiceChat.d.ts +0 -0
  1010. /package/{dist/hooks → hooks}/useVoiceChat.d.ts.map +0 -0
  1011. /package/{dist/hooks → hooks}/useVoiceChat.js +0 -0
  1012. /package/{dist/hooks → hooks}/useWhatsAppPairing.d.ts +0 -0
  1013. /package/{dist/hooks → hooks}/useWhatsAppPairing.d.ts.map +0 -0
  1014. /package/{dist/hooks → hooks}/useWhatsAppPairing.js +0 -0
  1015. /package/{dist/i18n → i18n}/index.d.ts +0 -0
  1016. /package/{dist/i18n → i18n}/index.d.ts.map +0 -0
  1017. /package/{dist/i18n → i18n}/index.js +0 -0
  1018. /package/{dist/i18n → i18n}/messages.d.ts +0 -0
  1019. /package/{dist/i18n → i18n}/messages.d.ts.map +0 -0
  1020. /package/{dist/i18n → i18n}/messages.js +0 -0
  1021. /package/{dist/index.d.ts → index.d.ts} +0 -0
  1022. /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  1023. /package/{dist/index.js → index.js} +0 -0
  1024. /package/{dist/navigation → navigation}/index.d.ts +0 -0
  1025. /package/{dist/navigation → navigation}/index.d.ts.map +0 -0
  1026. /package/{dist/onboarding-config.d.ts → onboarding-config.d.ts} +0 -0
  1027. /package/{dist/onboarding-config.d.ts.map → onboarding-config.d.ts.map} +0 -0
  1028. /package/{dist/onboarding-config.js → onboarding-config.js} +0 -0
  1029. /package/{dist/platform → platform}/browser-launch.d.ts +0 -0
  1030. /package/{dist/platform → platform}/browser-launch.d.ts.map +0 -0
  1031. /package/{dist/platform → platform}/index.d.ts +0 -0
  1032. /package/{dist/platform → platform}/index.d.ts.map +0 -0
  1033. /package/{dist/platform → platform}/index.js +0 -0
  1034. /package/{dist/providers → providers}/index.d.ts +0 -0
  1035. /package/{dist/providers → providers}/index.d.ts.map +0 -0
  1036. /package/{dist/providers → providers}/index.js +0 -0
  1037. /package/{dist/state → state}/AppContext.d.ts +0 -0
  1038. /package/{dist/state → state}/AppContext.d.ts.map +0 -0
  1039. /package/{dist/state → state}/index.d.ts +0 -0
  1040. /package/{dist/state → state}/index.d.ts.map +0 -0
  1041. /package/{dist/state → state}/index.js +0 -0
  1042. /package/{dist/state → state}/internal.d.ts +0 -0
  1043. /package/{dist/state → state}/internal.d.ts.map +0 -0
  1044. /package/{dist/state → state}/internal.js +0 -0
  1045. /package/{dist/state → state}/onboarding-resume.d.ts +0 -0
  1046. /package/{dist/state → state}/onboarding-resume.d.ts.map +0 -0
  1047. /package/{dist/state → state}/parsers.d.ts +0 -0
  1048. /package/{dist/state → state}/parsers.d.ts.map +0 -0
  1049. /package/{dist/state → state}/parsers.js +0 -0
  1050. /package/{dist/state → state}/persistence.d.ts +0 -0
  1051. /package/{dist/state → state}/persistence.d.ts.map +0 -0
  1052. /package/{dist/state → state}/shell-routing.d.ts +0 -0
  1053. /package/{dist/state → state}/shell-routing.d.ts.map +0 -0
  1054. /package/{dist/state → state}/shell-routing.js +0 -0
  1055. /package/{dist/state → state}/types.d.ts +0 -0
  1056. /package/{dist/state → state}/types.d.ts.map +0 -0
  1057. /package/{dist/state → state}/types.js +0 -0
  1058. /package/{dist/state → state}/ui-preferences.d.ts +0 -0
  1059. /package/{dist/state → state}/ui-preferences.d.ts.map +0 -0
  1060. /package/{dist/state → state}/ui-preferences.js +0 -0
  1061. /package/{dist/state → state}/useApp.d.ts +0 -0
  1062. /package/{dist/state → state}/useApp.d.ts.map +0 -0
  1063. /package/{dist/state → state}/useApp.js +0 -0
  1064. /package/{dist/stories → stories}/AppMockProvider.d.ts +0 -0
  1065. /package/{dist/stories → stories}/AppMockProvider.d.ts.map +0 -0
  1066. /package/{dist/stories → stories}/AppMockProvider.js +0 -0
  1067. /package/{src/styles → styles}/anime.css +0 -0
  1068. /package/{src/styles → styles}/base.css +0 -0
  1069. /package/{src/styles → styles}/onboarding-game.css +0 -0
  1070. /package/{src/styles → styles}/styles.css +0 -0
  1071. /package/{src/styles → styles}/xterm.css +0 -0
  1072. /package/{dist/types → types}/index.d.ts +0 -0
  1073. /package/{dist/types → types}/index.d.ts.map +0 -0
  1074. /package/{dist/types → types}/index.js +0 -0
  1075. /package/{dist/utils → utils}/asset-url.d.ts.map +0 -0
  1076. /package/{dist/utils → utils}/assistant-text.d.ts +0 -0
  1077. /package/{dist/utils → utils}/assistant-text.d.ts.map +0 -0
  1078. /package/{dist/utils → utils}/assistant-text.js +0 -0
  1079. /package/{dist/utils → utils}/clipboard.d.ts +0 -0
  1080. /package/{dist/utils → utils}/clipboard.d.ts.map +0 -0
  1081. /package/{dist/utils → utils}/clipboard.js +0 -0
  1082. /package/{dist/utils → utils}/desktop-dialogs.d.ts +0 -0
  1083. /package/{dist/utils → utils}/desktop-dialogs.d.ts.map +0 -0
  1084. /package/{dist/utils → utils}/desktop-dialogs.js +0 -0
  1085. /package/{dist/utils → utils}/index.d.ts +0 -0
  1086. /package/{dist/utils → utils}/index.d.ts.map +0 -0
  1087. /package/{dist/utils → utils}/index.js +0 -0
  1088. /package/{dist/utils → utils}/number-parsing.d.ts +0 -0
  1089. /package/{dist/utils → utils}/number-parsing.d.ts.map +0 -0
  1090. /package/{dist/utils → utils}/number-parsing.js +0 -0
  1091. /package/{dist/utils → utils}/openExternalUrl.d.ts +0 -0
  1092. /package/{dist/utils → utils}/openExternalUrl.d.ts.map +0 -0
  1093. /package/{dist/utils → utils}/openExternalUrl.js +0 -0
  1094. /package/{dist/utils → utils}/spoken-text.d.ts +0 -0
  1095. /package/{dist/utils → utils}/spoken-text.d.ts.map +0 -0
  1096. /package/{dist/utils → utils}/spoken-text.js +0 -0
  1097. /package/{dist/utils → utils}/streaming-text.d.ts +0 -0
  1098. /package/{dist/utils → utils}/streaming-text.d.ts.map +0 -0
  1099. /package/{dist/utils → utils}/streaming-text.js +0 -0
  1100. /package/{dist/voice → voice}/index.d.ts +0 -0
  1101. /package/{dist/voice → voice}/index.d.ts.map +0 -0
  1102. /package/{dist/voice → voice}/index.js +0 -0
  1103. /package/{dist/voice → voice}/types.d.ts +0 -0
  1104. /package/{dist/voice → voice}/types.d.ts.map +0 -0
  1105. /package/{dist/voice → voice}/types.js +0 -0
  1106. /package/{dist/wallet-rpc.d.ts → wallet-rpc.d.ts} +0 -0
  1107. /package/{dist/wallet-rpc.d.ts.map → wallet-rpc.d.ts.map} +0 -0
  1108. /package/{dist/wallet-rpc.js → wallet-rpc.js} +0 -0
@@ -1,1199 +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: "Reimu",
377
- username: "Reimu",
378
- bio: ["Reimu is soft and friendly"],
379
- system: "You are Reimu",
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: "Reimu", 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: 1,
403
- onboardingOptions: {
404
- styles: [
405
- {
406
- catchphrase: "uwu~",
407
- hint: "soft & sweet",
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: "composed & precise",
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("Reimu");
614
- expect(state.characterDraft?.bio).toEqual(["Reimu is soft and friendly"]);
615
- expect(state.characterDraft?.system).toBe("Custom system override");
616
- expect(state.selectedVrmIndex).toBe(1);
617
- });
618
-
619
- it("opens the detailed editor when explicitly routed to the character tab", 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
-
628
- expect(
629
- tree?.root.findAll(
630
- (node) => node.props["data-testid"] === "character-notebook",
631
- ) ?? [],
632
- ).toHaveLength(1);
633
- expect(
634
- tree?.root.findAll(
635
- (node) => node.props["data-testid"] === "character-roster-grid",
636
- ) ?? [],
637
- ).toHaveLength(0);
638
- });
639
-
640
- it("removes adjective editors from the character screen", async () => {
641
- let tree: TestRenderer.ReactTestRenderer | null = null;
642
-
643
- await act(async () => {
644
- tree = TestRenderer.create(React.createElement(CharacterView));
645
- });
646
-
647
- const adjectiveLabels =
648
- tree?.root.findAll((node) =>
649
- node.children?.some(
650
- (child) =>
651
- child === "Adjectives" || child === "characterview.adjectives",
652
- ),
653
- ) ?? [];
654
-
655
- expect(adjectiveLabels).toHaveLength(0);
656
- });
657
-
658
- it("keeps the voice picker in roster mode and hides it while customizing", async () => {
659
- let tree: TestRenderer.ReactTestRenderer | null = null;
660
-
661
- await act(async () => {
662
- tree = TestRenderer.create(React.createElement(CharacterView));
663
- });
664
-
665
- expect(
666
- tree?.root.findAll(
667
- (node) => node.props["data-testid"] === "character-voice-picker",
668
- ) ?? [],
669
- ).toHaveLength(1);
670
-
671
- const customizeButton = tree?.root.find(
672
- (node) => node.props["data-testid"] === "character-customize-toggle",
673
- );
674
-
675
- await act(async () => {
676
- customizeButton?.props.onClick();
677
- });
678
-
679
- expect(
680
- tree?.root.findAll(
681
- (node) => node.props["data-testid"] === "character-roster-grid",
682
- ) ?? [],
683
- ).toHaveLength(0);
684
- expect(
685
- tree?.root.findAll(
686
- (node) => node.props["data-testid"] === "character-voice-picker",
687
- ) ?? [],
688
- ).toHaveLength(1);
689
- expect(
690
- tree?.root.findAll(
691
- (node) => node.props["data-testid"] === "character-notebook",
692
- ) ?? [],
693
- ).toHaveLength(1);
694
- });
695
-
696
- it("shows style sections when navigating to the styleRules sidebar tab", async () => {
697
- state.tab = "character";
698
-
699
- let tree: TestRenderer.ReactTestRenderer | null = null;
700
-
701
- await act(async () => {
702
- tree = TestRenderer.create(React.createElement(CharacterView));
703
- });
704
-
705
- // Click the Style Rules sidebar tab
706
- const styleTab = tree?.root.find(
707
- (node) => node.props["data-testid"] === "notebook-tab-styleRules",
708
- );
709
-
710
- await act(async () => {
711
- styleTab?.props.onClick();
712
- });
713
-
714
- expect(
715
- tree?.root.findAll(
716
- (node) =>
717
- node.props["data-testid"] === "style-section-all" ||
718
- node.props["data-testid"] === "style-section-chat" ||
719
- node.props["data-testid"] === "style-section-post",
720
- ),
721
- ).toHaveLength(3);
722
- });
723
-
724
- it("turning custom off applies the selected character defaults and hides the editors", async () => {
725
- let tree: TestRenderer.ReactTestRenderer | null = null;
726
-
727
- await act(async () => {
728
- tree = TestRenderer.create(React.createElement(CharacterView));
729
- });
730
-
731
- const customizeButton = tree?.root.find(
732
- (node) => node.props["data-testid"] === "character-customize-toggle",
733
- );
734
-
735
- await act(async () => {
736
- customizeButton?.props.onClick();
737
- });
738
-
739
- const backButton = tree?.root.find(
740
- (node) => node.props["data-testid"] === "character-customize-toggle",
741
- );
742
-
743
- await act(async () => {
744
- backButton?.props.onClick();
745
- });
746
-
747
- expect(state.characterDraft?.name).toBe("Reimu");
748
- expect(state.characterDraft?.bio).toBe("Reimu is soft and friendly");
749
- expect(state.characterDraft?.system).toBe("You are Reimu");
750
- expect(state.selectedVrmIndex).toBe(1);
751
- expect(
752
- tree?.root.findAll(
753
- (node) => node.props["data-testid"] === "character-notebook",
754
- ) ?? [],
755
- ).toHaveLength(0);
756
- expect(
757
- tree?.root.findAll(
758
- (node) => node.props["data-testid"] === "character-roster-grid",
759
- ) ?? [],
760
- ).toHaveLength(1);
761
- });
762
-
763
- it("turning custom off keeps deep overrides intact", async () => {
764
- let tree: TestRenderer.ReactTestRenderer | null = null;
765
-
766
- await act(async () => {
767
- tree = TestRenderer.create(React.createElement(CharacterView));
768
- });
769
-
770
- const customizeButton = tree?.root.find(
771
- (node) => node.props["data-testid"] === "character-customize-toggle",
772
- );
773
-
774
- await act(async () => {
775
- customizeButton?.props.onClick();
776
- });
777
-
778
- await act(async () => {
779
- state.characterDraft = {
780
- ...(state.characterDraft as CharacterData),
781
- system: "Custom preserved system",
782
- };
783
- tree?.update(React.createElement(CharacterView));
784
- });
785
-
786
- const backButton = tree?.root.find(
787
- (node) => node.props["data-testid"] === "character-customize-toggle",
788
- );
789
-
790
- await act(async () => {
791
- backButton?.props.onClick();
792
- });
793
-
794
- expect(state.characterDraft?.system).toBe("Custom preserved system");
795
- expect(
796
- tree?.root.findAll(
797
- (node) => node.props["data-testid"] === "character-roster-grid",
798
- ) ?? [],
799
- ).toHaveLength(1);
800
- });
801
-
802
- it("does not wipe deep overrides when switching presets after leaving custom mode", async () => {
803
- let tree: TestRenderer.ReactTestRenderer | null = null;
804
-
805
- await act(async () => {
806
- tree = TestRenderer.create(React.createElement(CharacterView));
807
- });
808
-
809
- const customizeButton = tree?.root.find(
810
- (node) => node.props["data-testid"] === "character-customize-toggle",
811
- );
812
-
813
- await act(async () => {
814
- customizeButton?.props.onClick();
815
- });
816
-
817
- await act(async () => {
818
- state.characterDraft = {
819
- ...(state.characterDraft as CharacterData),
820
- system: "Custom preserved system",
821
- };
822
- tree?.update(React.createElement(CharacterView));
823
- });
824
-
825
- const backButton = tree?.root.find(
826
- (node) => node.props["data-testid"] === "character-customize-toggle",
827
- );
828
-
829
- await act(async () => {
830
- backButton?.props.onClick();
831
- });
832
-
833
- const sakuyaCard = tree?.root.find(
834
- (node) => node.props["data-testid"] === "character-preset-Noted.",
835
- );
836
-
837
- await act(async () => {
838
- sakuyaCard?.props.onClick();
839
- });
840
-
841
- expect(state.characterDraft?.name).toBe("Reimu");
842
- expect(state.characterDraft?.system).toBe("Custom preserved system");
843
- expect(state.selectedVrmIndex).toBe(4);
844
- });
845
-
846
- it("hides character select while customizing and restores it when going back", async () => {
847
- let tree: TestRenderer.ReactTestRenderer | null = null;
848
-
849
- await act(async () => {
850
- tree = TestRenderer.create(React.createElement(CharacterView));
851
- });
852
-
853
- const customizeButton = tree?.root.find(
854
- (node) => node.props["data-testid"] === "character-customize-toggle",
855
- );
856
-
857
- await act(async () => {
858
- customizeButton?.props.onClick();
859
- });
860
-
861
- expect(
862
- tree?.root.findAll(
863
- (node) => node.props["data-testid"] === "character-roster-grid",
864
- ) ?? [],
865
- ).toHaveLength(0);
866
- expect(
867
- tree?.root.findAll(
868
- (node) => node.props["data-testid"] === "character-customize-header",
869
- ) ?? [],
870
- ).toHaveLength(0);
871
-
872
- const backButton = tree?.root.find(
873
- (node) => node.props["data-testid"] === "character-customize-toggle",
874
- );
875
-
876
- await act(async () => {
877
- backButton?.props.onClick();
878
- });
879
-
880
- expect(
881
- tree?.root.findAll(
882
- (node) => node.props["data-testid"] === "character-roster-grid",
883
- ) ?? [],
884
- ).toHaveLength(1);
885
- });
886
-
887
- it("uses the selected character defaults when switching characters with custom off", async () => {
888
- let tree: TestRenderer.ReactTestRenderer | null = null;
889
- await act(async () => {
890
- tree = TestRenderer.create(React.createElement(CharacterView));
891
- });
892
-
893
- const sakuyaCard = tree?.root.find(
894
- (node) => node.props["data-testid"] === "character-preset-Noted.",
895
- );
896
-
897
- await act(async () => {
898
- sakuyaCard?.props.onClick();
899
- });
900
-
901
- expect(state.characterDraft?.name).toBe("Sakuya");
902
- expect(state.characterDraft?.bio).toBe("Sakuya is precise");
903
- expect(state.characterDraft?.system).toBe(
904
- "You are Sakuya, exact and calm.",
905
- );
906
- expect(state.selectedVrmIndex).toBe(4);
907
- });
908
-
909
- it("preserves deep custom character settings on load while staying in roster mode", async () => {
910
- state.characterData = {
911
- name: "Reimu",
912
- username: "Reimu",
913
- bio: ["Custom bio line"],
914
- system: "Custom Reimu system",
915
- adjectives: ["friendly", "helpful", "wildcard"],
916
- style: {
917
- all: ["Custom all rule"],
918
- chat: ["Custom chat rule"],
919
- post: ["Custom post rule"],
920
- },
921
- messageExamples: [
922
- {
923
- examples: [
924
- { name: "{{user1}}", content: { text: "hey?" } },
925
- { name: "Reimu", content: { text: "custom answer" } },
926
- ],
927
- },
928
- ],
929
- postExamples: ["Custom post"],
930
- };
931
- state.characterDraft = { ...state.characterData };
932
-
933
- let tree: TestRenderer.ReactTestRenderer | null = null;
934
- await act(async () => {
935
- tree = TestRenderer.create(React.createElement(CharacterView));
936
- });
937
-
938
- expect(
939
- tree?.root.findAll(
940
- (node) => node.props["data-testid"] === "character-notebook",
941
- ) ?? [],
942
- ).toHaveLength(0);
943
- expect(
944
- tree?.root.findAll(
945
- (node) => node.props["data-testid"] === "character-roster-grid",
946
- ) ?? [],
947
- ).toHaveLength(1);
948
- expect(state.characterDraft?.bio).toEqual(["Custom bio line"]);
949
- expect(state.characterDraft?.system).toBe("Custom Reimu system");
950
- });
951
-
952
- it("renders save button", async () => {
953
- let tree: TestRenderer.ReactTestRenderer | null = null;
954
-
955
- await act(async () => {
956
- tree = TestRenderer.create(React.createElement(CharacterView));
957
- });
958
-
959
- const saveButtons = tree?.root.findAll(
960
- (node) =>
961
- node.type === "button" &&
962
- node.children.some(
963
- (c) =>
964
- typeof c === "string" &&
965
- (c.toLowerCase().includes("save") ||
966
- c.toLowerCase().includes("update")),
967
- ),
968
- );
969
- expect(saveButtons.length).toBeGreaterThanOrEqual(0);
970
- });
971
-
972
- it("saves the full character payload, voice config, and avatar selection", async () => {
973
- mockUseApp.mockReset();
974
- mockUseApp.mockImplementation(() => ({
975
- uiLanguage: "en",
976
- t: (k: string) => k,
977
- ...state,
978
- setTab: vi.fn((tab: CharacterState["tab"]) => {
979
- state.tab = tab;
980
- }),
981
- loadCharacter: vi.fn(),
982
- loadRegistryStatus: vi.fn(),
983
- loadDropStatus: vi.fn(),
984
- handleSaveCharacter: async () => {
985
- _saveCharacterCalled = true;
986
- const characterDraft = state.characterDraft;
987
- if (!characterDraft) {
988
- throw new Error("Character draft is required before saving");
989
- }
990
- const prepared = prepareCharacterDraftForSave(characterDraft);
991
- const { agentName } = await client.updateCharacter(
992
- prepared as unknown as CharacterData,
993
- );
994
- await client.updateConfig({
995
- ui: { avatarIndex: state.selectedVrmIndex },
996
- });
997
- state.characterSaving = false;
998
- state.characterDirty = false;
999
- state.characterSaveSuccess = "Character saved successfully.";
1000
- if (agentName) {
1001
- const fallbackCharacterData =
1002
- state.characterData ?? createCharacterUIState().characterData;
1003
- if (!fallbackCharacterData) {
1004
- throw new Error("Character data is required after saving");
1005
- }
1006
- state.characterData = {
1007
- ...fallbackCharacterData,
1008
- ...(prepared as CharacterData),
1009
- name: agentName,
1010
- };
1011
- }
1012
- },
1013
- handleCharacterFieldInput: (field: string, value: unknown) => {
1014
- if (state.characterDraft) {
1015
- (state.characterDraft as Record<string, unknown>)[field] = value;
1016
- state.characterDirty = true;
1017
- }
1018
- },
1019
- handleCharacterArrayInput: vi.fn(),
1020
- handleCharacterStyleInput: vi.fn(),
1021
- setState: vi.fn((key: string, value: unknown) => {
1022
- (state as Record<string, unknown>)[key] = value;
1023
- }),
1024
- }));
1025
-
1026
- vi.mocked(client.updateCharacter).mockResolvedValue({
1027
- ok: true,
1028
- character: {} as CharacterData,
1029
- agentName: "Custom Sakuya",
1030
- });
1031
-
1032
- let tree: TestRenderer.ReactTestRenderer | null = null;
1033
-
1034
- await act(async () => {
1035
- tree = TestRenderer.create(React.createElement(CharacterView));
1036
- });
1037
-
1038
- state.characterDraft = {
1039
- name: "Custom Sakuya",
1040
- bio: " First line \n\n Second line ",
1041
- system: "Be exact.",
1042
- adjectives: ["precise", "calm"],
1043
- style: {
1044
- all: ["Be exact"],
1045
- chat: ["Stay calm"],
1046
- post: ["Be clear"],
1047
- },
1048
- messageExamples: [
1049
- {
1050
- examples: [
1051
- { name: "{{user1}}", content: { text: "status?" } },
1052
- { name: "Custom Sakuya", content: { text: "On track." } },
1053
- ],
1054
- },
1055
- ],
1056
- postExamples: ["Mission remains on schedule."],
1057
- };
1058
- state.selectedVrmIndex = 4;
1059
-
1060
- const saveButton = tree?.root.find(
1061
- (node) =>
1062
- node.type === "button" &&
1063
- node.children.some(
1064
- (child) => typeof child === "string" && child === "Save Character",
1065
- ),
1066
- );
1067
-
1068
- await act(async () => {
1069
- saveButton?.props.onClick();
1070
- });
1071
-
1072
- expect(_saveCharacterCalled).toBe(true);
1073
- expect(client.updateCharacter).toHaveBeenCalledWith({
1074
- name: "Custom Sakuya",
1075
- username: "Custom Sakuya",
1076
- bio: ["First line", "Second line"],
1077
- system: "Be exact.",
1078
- adjectives: ["precise", "calm"],
1079
- style: {
1080
- all: ["Be exact"],
1081
- chat: ["Stay calm"],
1082
- post: ["Be clear"],
1083
- },
1084
- messageExamples: [
1085
- {
1086
- examples: [
1087
- { name: "{{user1}}", content: { text: "status?" } },
1088
- { name: "Custom Sakuya", content: { text: "On track." } },
1089
- ],
1090
- },
1091
- ],
1092
- postExamples: ["Mission remains on schedule."],
1093
- });
1094
- expect(client.updateConfig).toHaveBeenNthCalledWith(1, {
1095
- messages: {
1096
- tts: {
1097
- provider: "elevenlabs",
1098
- elevenlabs: {
1099
- voiceId: "EXAVITQu4vr4xnSDxMaL",
1100
- modelId: "eleven_flash_v2_5",
1101
- },
1102
- },
1103
- },
1104
- });
1105
- expect(client.updateConfig).toHaveBeenNthCalledWith(2, {
1106
- ui: { avatarIndex: 4 },
1107
- });
1108
- });
1109
-
1110
- it("shows loading state when characterLoading is true", async () => {
1111
- state.characterLoading = true;
1112
- state.characterData = null;
1113
-
1114
- let tree: TestRenderer.ReactTestRenderer | null = null;
1115
-
1116
- await act(async () => {
1117
- tree = TestRenderer.create(React.createElement(CharacterView));
1118
- });
1119
-
1120
- // Should show some loading indicator or empty state
1121
- expect(tree).not.toBeNull();
1122
- });
1123
- });
1124
-
1125
- // ---------------------------------------------------------------------------
1126
- // Part 3: Integration Tests - Character Edit Flow
1127
- // ---------------------------------------------------------------------------
1128
-
1129
- describe("Character Edit Integration", () => {
1130
- let state: CharacterState;
1131
-
1132
- beforeEach(() => {
1133
- state = createCharacterUIState();
1134
-
1135
- mockUseApp.mockReset();
1136
- mockUseApp.mockImplementation(() => ({
1137
- uiLanguage: "en",
1138
- t: (k: string) => k,
1139
- ...state,
1140
- loadCharacter: vi.fn(),
1141
- saveCharacter: vi.fn().mockImplementation(async () => {
1142
- state.characterSaving = false;
1143
- state.characterDirty = false;
1144
- }),
1145
- setCharacterField: (field: string, value: unknown) => {
1146
- if (state.characterData) {
1147
- (state.characterData as Record<string, unknown>)[field] = value;
1148
- state.characterDirty = true;
1149
- }
1150
- },
1151
- }));
1152
- });
1153
-
1154
- it("editing name marks character as dirty", async () => {
1155
- expect(state.characterDirty).toBe(false);
1156
-
1157
- const mockSetField = mockUseApp().setCharacterField;
1158
- mockSetField("name", "NewName");
1159
-
1160
- expect(state.characterDirty).toBe(true);
1161
- expect(state.characterData?.name).toBe("NewName");
1162
- });
1163
-
1164
- it("editing bio marks character as dirty", async () => {
1165
- const mockSetField = mockUseApp().setCharacterField;
1166
- mockSetField("bio", ["New bio line"]);
1167
-
1168
- expect(state.characterDirty).toBe(true);
1169
- expect(state.characterData?.bio).toEqual(["New bio line"]);
1170
- });
1171
-
1172
- it("editing system prompt marks character as dirty", async () => {
1173
- const mockSetField = mockUseApp().setCharacterField;
1174
- mockSetField("system", "New system prompt");
1175
-
1176
- expect(state.characterDirty).toBe(true);
1177
- expect(state.characterData?.system).toBe("New system prompt");
1178
- });
1179
-
1180
- it("adding adjective updates state", async () => {
1181
- const mockSetField = mockUseApp().setCharacterField;
1182
- const newAdj = [...(state.characterData?.adjectives || []), "creative"];
1183
- mockSetField("adjectives", newAdj);
1184
-
1185
- expect(state.characterData?.adjectives).toContain("creative");
1186
- });
1187
-
1188
- it("updating style rules works for all categories", async () => {
1189
- const mockSetField = mockUseApp().setCharacterField;
1190
- const newStyle = {
1191
- all: ["New all rule"],
1192
- chat: ["New chat rule"],
1193
- post: ["New post rule"],
1194
- };
1195
- mockSetField("style", newStyle);
1196
-
1197
- expect(state.characterData?.style).toEqual(newStyle);
1198
- });
1199
- });