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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1183) hide show
  1. package/App.d.ts.map +1 -0
  2. package/{dist/App.js → App.js} +3 -3
  3. package/{dist/components → components}/AdvancedPageView.d.ts.map +1 -1
  4. package/{dist/components → components}/AdvancedPageView.js +0 -10
  5. package/{dist/components → components}/CharacterView.d.ts.map +1 -1
  6. package/components/CharacterView.js +685 -0
  7. package/{dist/components → components}/ChatComposer.d.ts.map +1 -1
  8. package/{dist/components → components}/ChatComposer.js +4 -4
  9. package/{dist/components → components}/ChatView.d.ts.map +1 -1
  10. package/{dist/components → components}/ChatView.js +15 -0
  11. package/{dist/components → components}/CompanionView.js +1 -1
  12. package/{dist/components → components}/ConfigPageView.js +1 -1
  13. package/{dist/components → components}/ElizaCloudDashboard.js +1 -1
  14. package/{dist/components → components}/FlaminaGuide.js +1 -1
  15. package/{dist/components → components}/OnboardingWizard.d.ts.map +1 -1
  16. package/{dist/components → components}/OnboardingWizard.js +3 -2
  17. package/{dist/components → components}/PluginsView.d.ts.map +1 -1
  18. package/{dist/components → components}/PluginsView.js +1 -5
  19. package/{dist/components → components}/avatar/VrmEngine.d.ts +13 -0
  20. package/{dist/components → components}/avatar/VrmEngine.d.ts.map +1 -1
  21. package/{dist/components → components}/avatar/VrmEngine.js +66 -0
  22. package/{dist/components → components}/avatar/VrmViewer.d.ts +15 -0
  23. package/{dist/components → components}/avatar/VrmViewer.d.ts.map +1 -1
  24. package/{dist/components → components}/avatar/VrmViewer.js +56 -1
  25. package/{src/components/index.ts → components/index.d.ts} +1 -1
  26. package/{dist/components → components}/index.d.ts.map +1 -1
  27. package/{dist/components → components}/index.js +0 -1
  28. package/{dist/components → components}/onboarding/ConnectionStep.d.ts.map +1 -1
  29. package/{dist/components → components}/onboarding/ConnectionStep.js +12 -7
  30. package/{dist/components → components}/permissions/StreamingPermissions.d.ts.map +1 -1
  31. package/{dist/components → components}/permissions/StreamingPermissions.js +1 -1
  32. package/{dist/components → components}/ui-switch.js +4 -4
  33. package/{dist/i18n → i18n}/locales/en.json +45 -1
  34. package/{src/i18n → i18n}/locales/es.json +41 -0
  35. package/{dist/i18n → i18n}/locales/ko.json +41 -0
  36. package/{dist/i18n → i18n}/locales/pt.json +41 -0
  37. package/{dist/i18n → i18n}/locales/zh-CN.json +41 -0
  38. package/package.json +143 -53
  39. package/{dist/state → state}/AppContext.d.ts.map +1 -1
  40. package/{dist/state → state}/AppContext.js +38 -16
  41. package/{dist/styles → styles}/anime.css +1 -4
  42. package/{dist/styles → styles}/onboarding-game.css +125 -9
  43. package/.turbo/turbo-build.log +0 -2
  44. package/.turbo/turbo-lint$colon$check.log +0 -2
  45. package/.turbo/turbo-typecheck.log +0 -1
  46. package/dist/App.d.ts.map +0 -1
  47. package/dist/components/CharacterView.js +0 -719
  48. package/dist/components/MiladyBar.d.ts +0 -2
  49. package/dist/components/MiladyBar.d.ts.map +0 -1
  50. package/dist/components/MiladyBar.js +0 -50
  51. package/dist/components/MiladyBarSettings.d.ts +0 -2
  52. package/dist/components/MiladyBarSettings.d.ts.map +0 -1
  53. package/dist/components/MiladyBarSettings.js +0 -513
  54. package/dist/components/SecurityPageView.d.ts +0 -2
  55. package/dist/components/SecurityPageView.d.ts.map +0 -1
  56. package/dist/components/SecurityPageView.js +0 -81
  57. package/dist/components/index.d.ts +0 -97
  58. package/dist/components/milady-bar/CloudCreditsChip.d.ts +0 -2
  59. package/dist/components/milady-bar/CloudCreditsChip.d.ts.map +0 -1
  60. package/dist/components/milady-bar/CloudCreditsChip.js +0 -25
  61. package/dist/components/milady-bar/ProviderDropdown.d.ts +0 -13
  62. package/dist/components/milady-bar/ProviderDropdown.d.ts.map +0 -1
  63. package/dist/components/milady-bar/ProviderDropdown.js +0 -68
  64. package/dist/components/milady-bar/WalletSummary.d.ts +0 -2
  65. package/dist/components/milady-bar/WalletSummary.d.ts.map +0 -1
  66. package/dist/components/milady-bar/WalletSummary.js +0 -37
  67. package/dist/components/milady-bar/index.d.ts +0 -4
  68. package/dist/components/milady-bar/index.d.ts.map +0 -1
  69. package/dist/components/milady-bar/index.js +0 -3
  70. package/dist/hooks/useMiladyBar.d.ts +0 -2
  71. package/dist/hooks/useMiladyBar.d.ts.map +0 -1
  72. package/dist/hooks/useMiladyBar.js +0 -472
  73. package/dist/i18n/locales/es.json +0 -1195
  74. package/dist/package.json +0 -180
  75. package/src/App.tsx +0 -504
  76. package/src/actions/character.test.ts +0 -139
  77. package/src/actions/character.ts +0 -334
  78. package/src/actions/chat-helpers.ts +0 -100
  79. package/src/actions/cloud.ts +0 -59
  80. package/src/actions/index.ts +0 -12
  81. package/src/actions/lifecycle.ts +0 -175
  82. package/src/actions/onboarding.ts +0 -38
  83. package/src/actions/triggers.ts +0 -190
  84. package/src/ambient.d.ts +0 -33
  85. package/src/api/client.ts +0 -5659
  86. package/src/api/index.ts +0 -1
  87. package/src/autonomy/index.ts +0 -477
  88. package/src/bridge/capacitor-bridge.ts +0 -295
  89. package/src/bridge/electrobun-rpc.ts +0 -78
  90. package/src/bridge/electrobun-runtime.ts +0 -28
  91. package/src/bridge/index.ts +0 -5
  92. package/src/bridge/native-plugins.ts +0 -138
  93. package/src/bridge/plugin-bridge.ts +0 -352
  94. package/src/bridge/storage-bridge.ts +0 -162
  95. package/src/chat/index.ts +0 -250
  96. package/src/coding/index.ts +0 -43
  97. package/src/components/AdvancedPageView.tsx +0 -382
  98. package/src/components/AgentActivityBox.tsx +0 -49
  99. package/src/components/ApiKeyConfig.tsx +0 -222
  100. package/src/components/AppsPageView.tsx +0 -52
  101. package/src/components/AppsView.tsx +0 -293
  102. package/src/components/AvatarLoader.tsx +0 -104
  103. package/src/components/AvatarSelector.tsx +0 -223
  104. package/src/components/BscTradePanel.tsx +0 -549
  105. package/src/components/BugReportModal.tsx +0 -499
  106. package/src/components/CharacterRoster.tsx +0 -143
  107. package/src/components/CharacterView.tsx +0 -1575
  108. package/src/components/ChatAvatar.test.ts +0 -97
  109. package/src/components/ChatAvatar.tsx +0 -147
  110. package/src/components/ChatComposer.tsx +0 -330
  111. package/src/components/ChatMessage.tsx +0 -448
  112. package/src/components/ChatModalView.test.tsx +0 -118
  113. package/src/components/ChatModalView.tsx +0 -125
  114. package/src/components/ChatView.tsx +0 -992
  115. package/src/components/CloudOnboarding.tsx +0 -81
  116. package/src/components/CloudSourceControls.tsx +0 -85
  117. package/src/components/CodingAgentSettingsSection.tsx +0 -537
  118. package/src/components/CommandPalette.tsx +0 -284
  119. package/src/components/CompanionSceneHost.tsx +0 -517
  120. package/src/components/CompanionShell.tsx +0 -31
  121. package/src/components/CompanionView.tsx +0 -110
  122. package/src/components/ConfigPageView.tsx +0 -763
  123. package/src/components/ConfigSaveFooter.tsx +0 -41
  124. package/src/components/ConfirmModal.tsx +0 -379
  125. package/src/components/ConnectionFailedBanner.tsx +0 -91
  126. package/src/components/ConnectorsPageView.tsx +0 -13
  127. package/src/components/ConversationsSidebar.tsx +0 -279
  128. package/src/components/CustomActionEditor.tsx +0 -1127
  129. package/src/components/CustomActionsPanel.tsx +0 -288
  130. package/src/components/CustomActionsView.tsx +0 -325
  131. package/src/components/DatabasePageView.tsx +0 -55
  132. package/src/components/DatabaseView.tsx +0 -814
  133. package/src/components/ElizaCloudDashboard.tsx +0 -1696
  134. package/src/components/EmotePicker.tsx +0 -529
  135. package/src/components/ErrorBoundary.tsx +0 -76
  136. package/src/components/FineTuningView.tsx +0 -1080
  137. package/src/components/FlaminaGuide.test.tsx +0 -61
  138. package/src/components/FlaminaGuide.tsx +0 -212
  139. package/src/components/GameView.tsx +0 -551
  140. package/src/components/GameViewOverlay.tsx +0 -133
  141. package/src/components/GlobalEmoteOverlay.tsx +0 -152
  142. package/src/components/Header.test.tsx +0 -413
  143. package/src/components/Header.tsx +0 -400
  144. package/src/components/HeartbeatsView.tsx +0 -1003
  145. package/src/components/InventoryView.tsx +0 -393
  146. package/src/components/KnowledgeView.tsx +0 -1128
  147. package/src/components/LanguageDropdown.tsx +0 -192
  148. package/src/components/LifoMonitorPanel.tsx +0 -196
  149. package/src/components/LifoSandboxView.tsx +0 -499
  150. package/src/components/LoadingScreen.tsx +0 -112
  151. package/src/components/LogsPageView.tsx +0 -17
  152. package/src/components/LogsView.tsx +0 -239
  153. package/src/components/MediaGalleryView.tsx +0 -431
  154. package/src/components/MediaSettingsSection.tsx +0 -893
  155. package/src/components/MessageContent.tsx +0 -815
  156. package/src/components/MiladyBar.tsx +0 -103
  157. package/src/components/MiladyBarSettings.tsx +0 -872
  158. package/src/components/OnboardingWizard.test.tsx +0 -104
  159. package/src/components/OnboardingWizard.tsx +0 -249
  160. package/src/components/PairingView.tsx +0 -109
  161. package/src/components/PermissionsSection.tsx +0 -1184
  162. package/src/components/PluginsPageView.tsx +0 -9
  163. package/src/components/PluginsView.tsx +0 -3129
  164. package/src/components/ProviderSwitcher.tsx +0 -903
  165. package/src/components/RestartBanner.tsx +0 -76
  166. package/src/components/RuntimeView.tsx +0 -460
  167. package/src/components/SaveCommandModal.tsx +0 -211
  168. package/src/components/SecretsView.tsx +0 -569
  169. package/src/components/SecurityPageView.tsx +0 -242
  170. package/src/components/SettingsView.tsx +0 -825
  171. package/src/components/ShellOverlays.tsx +0 -41
  172. package/src/components/ShortcutsOverlay.tsx +0 -155
  173. package/src/components/SkillsView.tsx +0 -1435
  174. package/src/components/StartupFailureView.tsx +0 -63
  175. package/src/components/StreamView.tsx +0 -481
  176. package/src/components/StripeEmbeddedCheckout.tsx +0 -155
  177. package/src/components/SubscriptionStatus.tsx +0 -640
  178. package/src/components/SystemWarningBanner.tsx +0 -71
  179. package/src/components/ThemeToggle.tsx +0 -103
  180. package/src/components/TrajectoriesView.tsx +0 -526
  181. package/src/components/TrajectoryDetailView.tsx +0 -426
  182. package/src/components/TriggersView.tsx +0 -1
  183. package/src/components/VectorBrowserView.tsx +0 -1633
  184. package/src/components/VoiceConfigView.tsx +0 -674
  185. package/src/components/VrmStage.test.ts +0 -176
  186. package/src/components/VrmStage.tsx +0 -309
  187. package/src/components/WhatsAppQrOverlay.tsx +0 -230
  188. package/src/components/__tests__/chainConfig.test.ts +0 -220
  189. package/src/components/apps/AppDetailPane.tsx +0 -242
  190. package/src/components/apps/AppsCatalogGrid.tsx +0 -137
  191. package/src/components/apps/extensions/registry.ts +0 -13
  192. package/src/components/apps/extensions/types.ts +0 -9
  193. package/src/components/apps/helpers.ts +0 -43
  194. package/src/components/avatar/VrmAnimationLoader.test.ts +0 -164
  195. package/src/components/avatar/VrmAnimationLoader.ts +0 -151
  196. package/src/components/avatar/VrmBlinkController.ts +0 -118
  197. package/src/components/avatar/VrmCameraManager.ts +0 -407
  198. package/src/components/avatar/VrmEngine.ts +0 -2767
  199. package/src/components/avatar/VrmFootShadow.ts +0 -96
  200. package/src/components/avatar/VrmViewer.tsx +0 -421
  201. package/src/components/avatar/__tests__/VrmCameraManager.test.ts +0 -168
  202. package/src/components/avatar/__tests__/VrmEngine.test.ts +0 -1574
  203. package/src/components/avatar/mixamoVRMRigMap.ts +0 -62
  204. package/src/components/avatar/retargetMixamoFbxToVrm.ts +0 -144
  205. package/src/components/avatar/retargetMixamoGltfToVrm.ts +0 -119
  206. package/src/components/chainConfig.ts +0 -400
  207. package/src/components/companion/CompanionHeader.tsx +0 -50
  208. package/src/components/companion/CompanionSceneHost.tsx +0 -5
  209. package/src/components/companion/VrmStage.tsx +0 -2
  210. package/src/components/companion/__tests__/walletUtils.test.ts +0 -742
  211. package/src/components/companion/index.ts +0 -18
  212. package/src/components/companion/walletUtils.ts +0 -290
  213. package/src/components/companion-shell-styles.test.ts +0 -142
  214. package/src/components/companion-shell-styles.ts +0 -270
  215. package/src/components/confirm-delete-control.tsx +0 -69
  216. package/src/components/conversations/ConversationListItem.tsx +0 -185
  217. package/src/components/conversations/conversation-utils.ts +0 -151
  218. package/src/components/format.ts +0 -131
  219. package/src/components/inventory/CopyableAddress.tsx +0 -41
  220. package/src/components/inventory/InventoryToolbar.tsx +0 -142
  221. package/src/components/inventory/NftGrid.tsx +0 -99
  222. package/src/components/inventory/TokenLogo.tsx +0 -71
  223. package/src/components/inventory/TokensTable.tsx +0 -216
  224. package/src/components/inventory/constants.ts +0 -170
  225. package/src/components/inventory/index.ts +0 -29
  226. package/src/components/inventory/media-url.test.ts +0 -38
  227. package/src/components/inventory/media-url.ts +0 -36
  228. package/src/components/inventory/useInventoryData.ts +0 -460
  229. package/src/components/knowledge-upload-image.ts +0 -215
  230. package/src/components/labels.ts +0 -46
  231. package/src/components/milady-bar/CloudCreditsChip.tsx +0 -61
  232. package/src/components/milady-bar/ProviderDropdown.tsx +0 -166
  233. package/src/components/milady-bar/WalletSummary.tsx +0 -61
  234. package/src/components/milady-bar/index.ts +0 -3
  235. package/src/components/onboarding/ActivateStep.tsx +0 -34
  236. package/src/components/onboarding/ConnectionStep.tsx +0 -1590
  237. package/src/components/onboarding/IdentityStep.tsx +0 -251
  238. package/src/components/onboarding/OnboardingPanel.tsx +0 -39
  239. package/src/components/onboarding/OnboardingStepNav.tsx +0 -41
  240. package/src/components/onboarding/PermissionsStep.tsx +0 -20
  241. package/src/components/onboarding/RpcStep.tsx +0 -402
  242. package/src/components/permissions/PermissionIcon.tsx +0 -25
  243. package/src/components/permissions/StreamingPermissions.tsx +0 -413
  244. package/src/components/plugins/showcase-data.ts +0 -481
  245. package/src/components/shared/ShellHeaderControls.tsx +0 -198
  246. package/src/components/shared-companion-scene-context.ts +0 -15
  247. package/src/components/skeletons.tsx +0 -88
  248. package/src/components/stream/ActivityFeed.tsx +0 -113
  249. package/src/components/stream/AvatarPip.tsx +0 -10
  250. package/src/components/stream/ChatContent.tsx +0 -126
  251. package/src/components/stream/ChatTicker.tsx +0 -55
  252. package/src/components/stream/IdleContent.tsx +0 -73
  253. package/src/components/stream/StatusBar.tsx +0 -463
  254. package/src/components/stream/StreamSettings.tsx +0 -506
  255. package/src/components/stream/StreamTerminal.tsx +0 -94
  256. package/src/components/stream/StreamVoiceConfig.tsx +0 -160
  257. package/src/components/stream/helpers.ts +0 -134
  258. package/src/components/stream/overlays/OverlayLayer.tsx +0 -75
  259. package/src/components/stream/overlays/built-in/ActionTickerWidget.tsx +0 -64
  260. package/src/components/stream/overlays/built-in/AlertPopupWidget.tsx +0 -87
  261. package/src/components/stream/overlays/built-in/BrandingWidget.tsx +0 -51
  262. package/src/components/stream/overlays/built-in/CustomHtmlWidget.tsx +0 -105
  263. package/src/components/stream/overlays/built-in/PeonGlassWidget.tsx +0 -265
  264. package/src/components/stream/overlays/built-in/PeonHudWidget.tsx +0 -247
  265. package/src/components/stream/overlays/built-in/PeonSakuraWidget.tsx +0 -278
  266. package/src/components/stream/overlays/built-in/ThoughtBubbleWidget.tsx +0 -77
  267. package/src/components/stream/overlays/built-in/ViewerCountWidget.tsx +0 -46
  268. package/src/components/stream/overlays/built-in/index.ts +0 -13
  269. package/src/components/stream/overlays/registry.ts +0 -22
  270. package/src/components/stream/overlays/types.ts +0 -90
  271. package/src/components/stream/overlays/useOverlayLayout.ts +0 -218
  272. package/src/components/trajectory-format.ts +0 -50
  273. package/src/components/ui-badges.tsx +0 -109
  274. package/src/components/ui-switch.tsx +0 -57
  275. package/src/components/vector-browser-three.ts +0 -29
  276. package/src/config/branding.ts +0 -67
  277. package/src/config/config-catalog.ts +0 -1092
  278. package/src/config/config-field.tsx +0 -1924
  279. package/src/config/config-renderer.tsx +0 -734
  280. package/src/config/index.ts +0 -12
  281. package/src/config/ui-renderer.tsx +0 -1751
  282. package/src/config/ui-spec.ts +0 -256
  283. package/src/events/index.ts +0 -96
  284. package/src/hooks/index.ts +0 -14
  285. package/src/hooks/useBugReport.tsx +0 -43
  286. package/src/hooks/useCanvasWindow.ts +0 -372
  287. package/src/hooks/useChatAvatarVoice.ts +0 -111
  288. package/src/hooks/useClickOutside.ts +0 -31
  289. package/src/hooks/useContextMenu.ts +0 -127
  290. package/src/hooks/useKeyboardShortcuts.ts +0 -86
  291. package/src/hooks/useLifoSync.ts +0 -143
  292. package/src/hooks/useMemoryMonitor.ts +0 -334
  293. package/src/hooks/useMiladyBar.ts +0 -594
  294. package/src/hooks/useRenderGuard.ts +0 -43
  295. package/src/hooks/useRetakeCapture.ts +0 -68
  296. package/src/hooks/useStreamPopoutNavigation.ts +0 -27
  297. package/src/hooks/useTimeout.ts +0 -37
  298. package/src/hooks/useVoiceChat.ts +0 -1442
  299. package/src/hooks/useWhatsAppPairing.ts +0 -123
  300. package/src/i18n/index.ts +0 -76
  301. package/src/i18n/locales/en.json +0 -1195
  302. package/src/i18n/locales/ko.json +0 -1195
  303. package/src/i18n/locales/pt.json +0 -1195
  304. package/src/i18n/locales/zh-CN.json +0 -1195
  305. package/src/i18n/messages.ts +0 -21
  306. package/src/index.ts +0 -6
  307. package/src/navigation/index.ts +0 -286
  308. package/src/navigation.test.ts +0 -189
  309. package/src/onboarding-config.test.ts +0 -104
  310. package/src/onboarding-config.ts +0 -122
  311. package/src/platform/browser-launch.test.ts +0 -94
  312. package/src/platform/browser-launch.ts +0 -149
  313. package/src/platform/index.ts +0 -58
  314. package/src/platform/init.ts +0 -238
  315. package/src/platform/lifo.ts +0 -225
  316. package/src/providers/index.ts +0 -108
  317. package/src/shell-params.test.ts +0 -48
  318. package/src/shell-params.ts +0 -36
  319. package/src/state/AppContext.tsx +0 -6415
  320. package/src/state/index.ts +0 -6
  321. package/src/state/internal.ts +0 -91
  322. package/src/state/onboarding-resume.test.ts +0 -135
  323. package/src/state/onboarding-resume.ts +0 -263
  324. package/src/state/parsers.test.ts +0 -124
  325. package/src/state/parsers.ts +0 -309
  326. package/src/state/persistence.ts +0 -379
  327. package/src/state/shell-routing.ts +0 -39
  328. package/src/state/types.ts +0 -724
  329. package/src/state/ui-preferences.ts +0 -3
  330. package/src/state/useApp.ts +0 -23
  331. package/src/state/vrm.ts +0 -108
  332. package/src/styles/anime.css +0 -6324
  333. package/src/styles/base.css +0 -213
  334. package/src/styles/onboarding-game.css +0 -976
  335. package/src/styles/styles.css +0 -2087
  336. package/src/styles/xterm.css +0 -241
  337. package/src/types/index.ts +0 -715
  338. package/src/types/react-test-renderer.d.ts +0 -45
  339. package/src/utils/asset-url.ts +0 -110
  340. package/src/utils/assistant-text.ts +0 -172
  341. package/src/utils/clipboard.ts +0 -41
  342. package/src/utils/desktop-dialogs.ts +0 -80
  343. package/src/utils/eliza-globals.ts +0 -44
  344. package/src/utils/index.ts +0 -7
  345. package/src/utils/number-parsing.ts +0 -125
  346. package/src/utils/openExternalUrl.ts +0 -20
  347. package/src/utils/spoken-text.ts +0 -65
  348. package/src/utils/streaming-text.ts +0 -120
  349. package/src/voice/index.ts +0 -1
  350. package/src/voice/types.ts +0 -197
  351. package/src/wallet-rpc.ts +0 -176
  352. package/test/app/AppContext.pty-sessions.test.tsx +0 -143
  353. package/test/app/MessageContent.test.tsx +0 -366
  354. package/test/app/PermissionsOnboarding.test.tsx +0 -358
  355. package/test/app/PermissionsSection.test.tsx +0 -575
  356. package/test/app/advanced-trajectory-fine-tuning.e2e.test.ts +0 -396
  357. package/test/app/agent-activity-box.test.tsx +0 -132
  358. package/test/app/agent-transfer-lock.test.ts +0 -279
  359. package/test/app/api-client-electrobun-fallback.test.ts +0 -139
  360. package/test/app/api-client-electron-fallback.test.ts +0 -139
  361. package/test/app/api-client-timeout.test.ts +0 -75
  362. package/test/app/api-client-ws.test.ts +0 -98
  363. package/test/app/api-client.ws-max-reconnect.test.ts +0 -139
  364. package/test/app/api-client.ws-reconnect.test.ts +0 -157
  365. package/test/app/app-context-autonomy-events.test.ts +0 -559
  366. package/test/app/apps-page-view.test.ts +0 -114
  367. package/test/app/apps-view.test.ts +0 -768
  368. package/test/app/autonomous-workflows.e2e.test.ts +0 -765
  369. package/test/app/autonomy-events.test.ts +0 -150
  370. package/test/app/avatar-selector.test.tsx +0 -52
  371. package/test/app/bsc-trade-panel.test.tsx +0 -134
  372. package/test/app/bug-report-modal.test.tsx +0 -353
  373. package/test/app/character-action-bar-visibility.test.ts +0 -70
  374. package/test/app/character-customization.e2e.test.ts +0 -1384
  375. package/test/app/character-save-journey.test.ts +0 -1245
  376. package/test/app/chat-advanced-features.e2e.test.ts +0 -706
  377. package/test/app/chat-composer.test.tsx +0 -181
  378. package/test/app/chat-journey.test.ts +0 -1075
  379. package/test/app/chat-language-header.test.ts +0 -64
  380. package/test/app/chat-message.test.tsx +0 -222
  381. package/test/app/chat-modal-view.test.tsx +0 -191
  382. package/test/app/chat-routine-filter.test.ts +0 -96
  383. package/test/app/chat-send-lock.test.ts +0 -1465
  384. package/test/app/chat-stream-api-client.test.tsx +0 -390
  385. package/test/app/chat-view-game-modal.test.tsx +0 -661
  386. package/test/app/chat-view.test.tsx +0 -877
  387. package/test/app/cloud-api.e2e.test.ts +0 -258
  388. package/test/app/cloud-login-flow.e2e.test.ts +0 -494
  389. package/test/app/cloud-login-lock.test.ts +0 -416
  390. package/test/app/command-palette.test.tsx +0 -184
  391. package/test/app/command-registry.test.ts +0 -75
  392. package/test/app/companion-greeting-wave.test.tsx +0 -431
  393. package/test/app/companion-scene-host.test.tsx +0 -85
  394. package/test/app/companion-stale-conversation.test.tsx +0 -447
  395. package/test/app/companion-view.test.tsx +0 -690
  396. package/test/app/confirm-delete-control.test.ts +0 -79
  397. package/test/app/confirm-modal.test.tsx +0 -219
  398. package/test/app/connection-mode-persistence.test.ts +0 -411
  399. package/test/app/connectors-ui.e2e.test.ts +0 -508
  400. package/test/app/conversations-sidebar-game-modal.test.tsx +0 -265
  401. package/test/app/conversations-sidebar.test.tsx +0 -185
  402. package/test/app/custom-actions-smoke.test.ts +0 -387
  403. package/test/app/custom-avatar-api-client.test.ts +0 -207
  404. package/test/app/desktop-utils.test.ts +0 -145
  405. package/test/app/electrobun-rpc-bridge.test.ts +0 -83
  406. package/test/app/events.test.ts +0 -88
  407. package/test/app/export-import-flows.e2e.test.ts +0 -700
  408. package/test/app/fine-tuning-view.test.ts +0 -471
  409. package/test/app/game-view-auth-session.test.tsx +0 -187
  410. package/test/app/game-view.test.ts +0 -444
  411. package/test/app/global-emote-overlay.test.tsx +0 -106
  412. package/test/app/header-status.test.tsx +0 -149
  413. package/test/app/i18n.test.ts +0 -152
  414. package/test/app/inventory-bsc-view.test.ts +0 -940
  415. package/test/app/knowledge-ui.e2e.test.ts +0 -762
  416. package/test/app/knowledge-upload-helpers.test.ts +0 -124
  417. package/test/app/lifecycle-lock.test.ts +0 -267
  418. package/test/app/lifo-popout-utils.test.ts +0 -208
  419. package/test/app/lifo-safe-endpoint.test.ts +0 -34
  420. package/test/app/loading-screen.test.tsx +0 -45
  421. package/test/app/memory-monitor.test.ts +0 -331
  422. package/test/app/milady-bar-regression.test.tsx +0 -519
  423. package/test/app/milady-bar-settings.test.tsx +0 -1056
  424. package/test/app/milady-bar.test.tsx +0 -583
  425. package/test/app/navigation.test.tsx +0 -22
  426. package/test/app/onboarding-e2e-journey.test.ts +0 -1391
  427. package/test/app/onboarding-finish-lock.test.ts +0 -676
  428. package/test/app/onboarding-language.test.tsx +0 -160
  429. package/test/app/onboarding-steps.test.tsx +0 -376
  430. package/test/app/open-external-url.test.ts +0 -65
  431. package/test/app/pages-navigation-smoke.e2e.test.ts +0 -646
  432. package/test/app/pairing-lock.test.ts +0 -260
  433. package/test/app/pairing-view.test.tsx +0 -74
  434. package/test/app/permissions-section.test.ts +0 -432
  435. package/test/app/plugin-bridge.test.ts +0 -109
  436. package/test/app/plugins-ui.e2e.test.ts +0 -605
  437. package/test/app/plugins-view-game-modal.test.tsx +0 -686
  438. package/test/app/plugins-view-toggle-restart.test.ts +0 -129
  439. package/test/app/provider-dropdown-default.test.tsx +0 -300
  440. package/test/app/restart-banner.test.tsx +0 -205
  441. package/test/app/retake-capture.test.ts +0 -84
  442. package/test/app/sandbox-api-client.test.ts +0 -108
  443. package/test/app/save-command-modal.test.tsx +0 -109
  444. package/test/app/secrets-view.test.tsx +0 -92
  445. package/test/app/settings-control-styles.test.tsx +0 -142
  446. package/test/app/settings-reset.e2e.test.ts +0 -726
  447. package/test/app/settings-sections.e2e.test.ts +0 -614
  448. package/test/app/shared-format.test.ts +0 -44
  449. package/test/app/shared-switch.test.ts +0 -69
  450. package/test/app/shell-mode-switching.e2e.test.ts +0 -841
  451. package/test/app/shell-mode-tab-memory.test.tsx +0 -58
  452. package/test/app/shell-overlays.test.tsx +0 -50
  453. package/test/app/shortcuts-overlay.test.tsx +0 -111
  454. package/test/app/sse-interruption.test.ts +0 -122
  455. package/test/app/startup-asset-missing.e2e.test.ts +0 -126
  456. package/test/app/startup-backend-missing.e2e.test.ts +0 -126
  457. package/test/app/startup-chat.e2e.test.ts +0 -323
  458. package/test/app/startup-conversation-restore.test.tsx +0 -381
  459. package/test/app/startup-failure-view.test.tsx +0 -103
  460. package/test/app/startup-onboarding.e2e.test.ts +0 -712
  461. package/test/app/startup-timeout.test.tsx +0 -80
  462. package/test/app/startup-token-401.e2e.test.ts +0 -103
  463. package/test/app/stream-helpers.test.ts +0 -46
  464. package/test/app/stream-popout-navigation.test.tsx +0 -41
  465. package/test/app/stream-status-bar.test.tsx +0 -89
  466. package/test/app/theme-toggle.test.tsx +0 -40
  467. package/test/app/training-api-client.test.ts +0 -128
  468. package/test/app/trajectories-view.test.tsx +0 -220
  469. package/test/app/triggers-api-client.test.ts +0 -77
  470. package/test/app/triggers-navigation.test.ts +0 -113
  471. package/test/app/triggers-view.e2e.test.ts +0 -675
  472. package/test/app/update-channel-lock.test.ts +0 -259
  473. package/test/app/vector-browser.async-cleanup.test.tsx +0 -367
  474. package/test/app/vector-browser.e2e.test.ts +0 -653
  475. package/test/app/vrm-stage.test.tsx +0 -351
  476. package/test/app/vrm-viewer.test.tsx +0 -298
  477. package/test/app/wallet-api-save-lock.test.ts +0 -299
  478. package/test/app/wallet-hooks.test.ts +0 -405
  479. package/test/app/wallet-ui-flows.e2e.test.ts +0 -556
  480. package/test/avatar/asset-url.test.ts +0 -90
  481. package/test/avatar/avatar-selector.test.ts +0 -173
  482. package/test/avatar/mixamo-vrm-rig-map.test.ts +0 -111
  483. package/test/avatar/voice-chat-streaming-text.test.ts +0 -96
  484. package/test/avatar/voice-chat.test.ts +0 -391
  485. package/test/browser-extension/README.md +0 -138
  486. package/test/browser-extension/test-harness.ts +0 -499
  487. package/test/capacitor-plugins.e2e.test.ts +0 -168
  488. package/test/test-types.ts +0 -5
  489. package/test/ui/command-palette-commands.test.ts +0 -57
  490. package/test/ui/ui-renderer.test.ts +0 -39
  491. package/test/utils/assistant-text.test.ts +0 -68
  492. package/test/utils/eliza-globals.test.ts +0 -59
  493. package/test/utils/package-exports.test.ts +0 -70
  494. package/test/utils/streaming-text.test.ts +0 -89
  495. package/tsconfig.build.json +0 -19
  496. package/tsconfig.json +0 -20
  497. package/tsconfig.typecheck.json +0 -12
  498. /package/{dist/App.d.ts → App.d.ts} +0 -0
  499. /package/{dist/actions → actions}/character.d.ts +0 -0
  500. /package/{dist/actions → actions}/character.d.ts.map +0 -0
  501. /package/{dist/actions → actions}/character.js +0 -0
  502. /package/{dist/actions → actions}/chat-helpers.d.ts +0 -0
  503. /package/{dist/actions → actions}/chat-helpers.d.ts.map +0 -0
  504. /package/{dist/actions → actions}/chat-helpers.js +0 -0
  505. /package/{dist/actions → actions}/cloud.d.ts +0 -0
  506. /package/{dist/actions → actions}/cloud.d.ts.map +0 -0
  507. /package/{dist/actions → actions}/cloud.js +0 -0
  508. /package/{dist/actions → actions}/index.d.ts +0 -0
  509. /package/{dist/actions → actions}/index.d.ts.map +0 -0
  510. /package/{dist/actions → actions}/index.js +0 -0
  511. /package/{dist/actions → actions}/lifecycle.d.ts +0 -0
  512. /package/{dist/actions → actions}/lifecycle.d.ts.map +0 -0
  513. /package/{dist/actions → actions}/lifecycle.js +0 -0
  514. /package/{dist/actions → actions}/onboarding.d.ts +0 -0
  515. /package/{dist/actions → actions}/onboarding.d.ts.map +0 -0
  516. /package/{dist/actions → actions}/onboarding.js +0 -0
  517. /package/{dist/actions → actions}/triggers.d.ts +0 -0
  518. /package/{dist/actions → actions}/triggers.d.ts.map +0 -0
  519. /package/{dist/actions → actions}/triggers.js +0 -0
  520. /package/{dist/api → api}/client.d.ts +0 -0
  521. /package/{dist/api → api}/client.d.ts.map +0 -0
  522. /package/{dist/api → api}/client.js +0 -0
  523. /package/{dist/api → api}/index.d.ts +0 -0
  524. /package/{dist/api → api}/index.d.ts.map +0 -0
  525. /package/{dist/api → api}/index.js +0 -0
  526. /package/{dist/autonomy → autonomy}/index.d.ts +0 -0
  527. /package/{dist/autonomy → autonomy}/index.d.ts.map +0 -0
  528. /package/{dist/autonomy → autonomy}/index.js +0 -0
  529. /package/{dist/bridge → bridge}/capacitor-bridge.d.ts +0 -0
  530. /package/{dist/bridge → bridge}/capacitor-bridge.d.ts.map +0 -0
  531. /package/{dist/bridge → bridge}/capacitor-bridge.js +0 -0
  532. /package/{dist/bridge → bridge}/electrobun-rpc.d.ts +0 -0
  533. /package/{dist/bridge → bridge}/electrobun-rpc.d.ts.map +0 -0
  534. /package/{dist/bridge → bridge}/electrobun-rpc.js +0 -0
  535. /package/{dist/bridge → bridge}/electrobun-runtime.d.ts +0 -0
  536. /package/{dist/bridge → bridge}/electrobun-runtime.d.ts.map +0 -0
  537. /package/{dist/bridge → bridge}/electrobun-runtime.js +0 -0
  538. /package/{dist/bridge → bridge}/index.d.ts +0 -0
  539. /package/{dist/bridge → bridge}/index.d.ts.map +0 -0
  540. /package/{dist/bridge → bridge}/index.js +0 -0
  541. /package/{dist/bridge → bridge}/native-plugins.d.ts +0 -0
  542. /package/{dist/bridge → bridge}/native-plugins.d.ts.map +0 -0
  543. /package/{dist/bridge → bridge}/native-plugins.js +0 -0
  544. /package/{dist/bridge → bridge}/plugin-bridge.d.ts +0 -0
  545. /package/{dist/bridge → bridge}/plugin-bridge.d.ts.map +0 -0
  546. /package/{dist/bridge → bridge}/plugin-bridge.js +0 -0
  547. /package/{dist/bridge → bridge}/storage-bridge.d.ts +0 -0
  548. /package/{dist/bridge → bridge}/storage-bridge.d.ts.map +0 -0
  549. /package/{dist/bridge → bridge}/storage-bridge.js +0 -0
  550. /package/{dist/chat → chat}/index.d.ts +0 -0
  551. /package/{dist/chat → chat}/index.d.ts.map +0 -0
  552. /package/{dist/chat → chat}/index.js +0 -0
  553. /package/{dist/coding → coding}/index.d.ts +0 -0
  554. /package/{dist/coding → coding}/index.d.ts.map +0 -0
  555. /package/{dist/coding → coding}/index.js +0 -0
  556. /package/{dist/components → components}/AdvancedPageView.d.ts +0 -0
  557. /package/{dist/components → components}/AgentActivityBox.d.ts +0 -0
  558. /package/{dist/components → components}/AgentActivityBox.d.ts.map +0 -0
  559. /package/{dist/components → components}/AgentActivityBox.js +0 -0
  560. /package/{dist/components → components}/ApiKeyConfig.d.ts +0 -0
  561. /package/{dist/components → components}/ApiKeyConfig.d.ts.map +0 -0
  562. /package/{dist/components → components}/ApiKeyConfig.js +0 -0
  563. /package/{dist/components → components}/AppsPageView.d.ts +0 -0
  564. /package/{dist/components → components}/AppsPageView.d.ts.map +0 -0
  565. /package/{dist/components → components}/AppsPageView.js +0 -0
  566. /package/{dist/components → components}/AppsView.d.ts +0 -0
  567. /package/{dist/components → components}/AppsView.d.ts.map +0 -0
  568. /package/{dist/components → components}/AppsView.js +0 -0
  569. /package/{dist/components → components}/AvatarLoader.d.ts +0 -0
  570. /package/{dist/components → components}/AvatarLoader.d.ts.map +0 -0
  571. /package/{dist/components → components}/AvatarLoader.js +0 -0
  572. /package/{dist/components → components}/AvatarSelector.d.ts +0 -0
  573. /package/{dist/components → components}/AvatarSelector.d.ts.map +0 -0
  574. /package/{dist/components → components}/AvatarSelector.js +0 -0
  575. /package/{dist/components → components}/BscTradePanel.d.ts +0 -0
  576. /package/{dist/components → components}/BscTradePanel.d.ts.map +0 -0
  577. /package/{dist/components → components}/BscTradePanel.js +0 -0
  578. /package/{dist/components → components}/BugReportModal.d.ts +0 -0
  579. /package/{dist/components → components}/BugReportModal.d.ts.map +0 -0
  580. /package/{dist/components → components}/BugReportModal.js +0 -0
  581. /package/{dist/components → components}/CharacterRoster.d.ts +0 -0
  582. /package/{dist/components → components}/CharacterRoster.d.ts.map +0 -0
  583. /package/{dist/components → components}/CharacterRoster.js +0 -0
  584. /package/{dist/components → components}/CharacterView.d.ts +0 -0
  585. /package/{dist/components → components}/ChatAvatar.d.ts +0 -0
  586. /package/{dist/components → components}/ChatAvatar.d.ts.map +0 -0
  587. /package/{dist/components → components}/ChatAvatar.js +0 -0
  588. /package/{dist/components → components}/ChatComposer.d.ts +0 -0
  589. /package/{dist/components → components}/ChatMessage.d.ts +0 -0
  590. /package/{dist/components → components}/ChatMessage.d.ts.map +0 -0
  591. /package/{dist/components → components}/ChatMessage.js +0 -0
  592. /package/{dist/components → components}/ChatModalView.d.ts +0 -0
  593. /package/{dist/components → components}/ChatModalView.d.ts.map +0 -0
  594. /package/{dist/components → components}/ChatModalView.js +0 -0
  595. /package/{dist/components → components}/ChatView.d.ts +0 -0
  596. /package/{dist/components → components}/CloudOnboarding.d.ts +0 -0
  597. /package/{dist/components → components}/CloudOnboarding.d.ts.map +0 -0
  598. /package/{dist/components → components}/CloudOnboarding.js +0 -0
  599. /package/{dist/components → components}/CloudSourceControls.d.ts +0 -0
  600. /package/{dist/components → components}/CloudSourceControls.d.ts.map +0 -0
  601. /package/{dist/components → components}/CloudSourceControls.js +0 -0
  602. /package/{dist/components → components}/CodingAgentSettingsSection.d.ts +0 -0
  603. /package/{dist/components → components}/CodingAgentSettingsSection.d.ts.map +0 -0
  604. /package/{dist/components → components}/CodingAgentSettingsSection.js +0 -0
  605. /package/{dist/components → components}/CommandPalette.d.ts +0 -0
  606. /package/{dist/components → components}/CommandPalette.d.ts.map +0 -0
  607. /package/{dist/components → components}/CommandPalette.js +0 -0
  608. /package/{dist/components → components}/CompanionSceneHost.d.ts +0 -0
  609. /package/{dist/components → components}/CompanionSceneHost.d.ts.map +0 -0
  610. /package/{dist/components → components}/CompanionSceneHost.js +0 -0
  611. /package/{dist/components → components}/CompanionShell.d.ts +0 -0
  612. /package/{dist/components → components}/CompanionShell.d.ts.map +0 -0
  613. /package/{dist/components → components}/CompanionShell.js +0 -0
  614. /package/{dist/components → components}/CompanionView.d.ts +0 -0
  615. /package/{dist/components → components}/CompanionView.d.ts.map +0 -0
  616. /package/{dist/components → components}/ConfigPageView.d.ts +0 -0
  617. /package/{dist/components → components}/ConfigPageView.d.ts.map +0 -0
  618. /package/{dist/components → components}/ConfigSaveFooter.d.ts +0 -0
  619. /package/{dist/components → components}/ConfigSaveFooter.d.ts.map +0 -0
  620. /package/{dist/components → components}/ConfigSaveFooter.js +0 -0
  621. /package/{dist/components → components}/ConfirmModal.d.ts +0 -0
  622. /package/{dist/components → components}/ConfirmModal.d.ts.map +0 -0
  623. /package/{dist/components → components}/ConfirmModal.js +0 -0
  624. /package/{dist/components → components}/ConnectionFailedBanner.d.ts +0 -0
  625. /package/{dist/components → components}/ConnectionFailedBanner.d.ts.map +0 -0
  626. /package/{dist/components → components}/ConnectionFailedBanner.js +0 -0
  627. /package/{dist/components → components}/ConnectorsPageView.d.ts +0 -0
  628. /package/{dist/components → components}/ConnectorsPageView.d.ts.map +0 -0
  629. /package/{dist/components → components}/ConnectorsPageView.js +0 -0
  630. /package/{dist/components → components}/ConversationsSidebar.d.ts +0 -0
  631. /package/{dist/components → components}/ConversationsSidebar.d.ts.map +0 -0
  632. /package/{dist/components → components}/ConversationsSidebar.js +0 -0
  633. /package/{dist/components → components}/CustomActionEditor.d.ts +0 -0
  634. /package/{dist/components → components}/CustomActionEditor.d.ts.map +0 -0
  635. /package/{dist/components → components}/CustomActionEditor.js +0 -0
  636. /package/{dist/components → components}/CustomActionsPanel.d.ts +0 -0
  637. /package/{dist/components → components}/CustomActionsPanel.d.ts.map +0 -0
  638. /package/{dist/components → components}/CustomActionsPanel.js +0 -0
  639. /package/{dist/components → components}/CustomActionsView.d.ts +0 -0
  640. /package/{dist/components → components}/CustomActionsView.d.ts.map +0 -0
  641. /package/{dist/components → components}/CustomActionsView.js +0 -0
  642. /package/{dist/components → components}/DatabasePageView.d.ts +0 -0
  643. /package/{dist/components → components}/DatabasePageView.d.ts.map +0 -0
  644. /package/{dist/components → components}/DatabasePageView.js +0 -0
  645. /package/{dist/components → components}/DatabaseView.d.ts +0 -0
  646. /package/{dist/components → components}/DatabaseView.d.ts.map +0 -0
  647. /package/{dist/components → components}/DatabaseView.js +0 -0
  648. /package/{dist/components → components}/ElizaCloudDashboard.d.ts +0 -0
  649. /package/{dist/components → components}/ElizaCloudDashboard.d.ts.map +0 -0
  650. /package/{dist/components → components}/EmotePicker.d.ts +0 -0
  651. /package/{dist/components → components}/EmotePicker.d.ts.map +0 -0
  652. /package/{dist/components → components}/EmotePicker.js +0 -0
  653. /package/{dist/components → components}/ErrorBoundary.d.ts +0 -0
  654. /package/{dist/components → components}/ErrorBoundary.d.ts.map +0 -0
  655. /package/{dist/components → components}/ErrorBoundary.js +0 -0
  656. /package/{dist/components → components}/FineTuningView.d.ts +0 -0
  657. /package/{dist/components → components}/FineTuningView.d.ts.map +0 -0
  658. /package/{dist/components → components}/FineTuningView.js +0 -0
  659. /package/{dist/components → components}/FlaminaGuide.d.ts +0 -0
  660. /package/{dist/components → components}/FlaminaGuide.d.ts.map +0 -0
  661. /package/{dist/components → components}/GameView.d.ts +0 -0
  662. /package/{dist/components → components}/GameView.d.ts.map +0 -0
  663. /package/{dist/components → components}/GameView.js +0 -0
  664. /package/{dist/components → components}/GameViewOverlay.d.ts +0 -0
  665. /package/{dist/components → components}/GameViewOverlay.d.ts.map +0 -0
  666. /package/{dist/components → components}/GameViewOverlay.js +0 -0
  667. /package/{dist/components → components}/GlobalEmoteOverlay.d.ts +0 -0
  668. /package/{dist/components → components}/GlobalEmoteOverlay.d.ts.map +0 -0
  669. /package/{dist/components → components}/GlobalEmoteOverlay.js +0 -0
  670. /package/{dist/components → components}/Header.d.ts +0 -0
  671. /package/{dist/components → components}/Header.d.ts.map +0 -0
  672. /package/{dist/components → components}/Header.js +0 -0
  673. /package/{dist/components → components}/HeartbeatsView.d.ts +0 -0
  674. /package/{dist/components → components}/HeartbeatsView.d.ts.map +0 -0
  675. /package/{dist/components → components}/HeartbeatsView.js +0 -0
  676. /package/{dist/components → components}/InventoryView.d.ts +0 -0
  677. /package/{dist/components → components}/InventoryView.d.ts.map +0 -0
  678. /package/{dist/components → components}/InventoryView.js +0 -0
  679. /package/{dist/components → components}/KnowledgeView.d.ts +0 -0
  680. /package/{dist/components → components}/KnowledgeView.d.ts.map +0 -0
  681. /package/{dist/components → components}/KnowledgeView.js +0 -0
  682. /package/{dist/components → components}/LanguageDropdown.d.ts +0 -0
  683. /package/{dist/components → components}/LanguageDropdown.d.ts.map +0 -0
  684. /package/{dist/components → components}/LanguageDropdown.js +0 -0
  685. /package/{dist/components → components}/LifoMonitorPanel.d.ts +0 -0
  686. /package/{dist/components → components}/LifoMonitorPanel.d.ts.map +0 -0
  687. /package/{dist/components → components}/LifoMonitorPanel.js +0 -0
  688. /package/{dist/components → components}/LifoSandboxView.d.ts +0 -0
  689. /package/{dist/components → components}/LifoSandboxView.d.ts.map +0 -0
  690. /package/{dist/components → components}/LifoSandboxView.js +0 -0
  691. /package/{dist/components → components}/LoadingScreen.d.ts +0 -0
  692. /package/{dist/components → components}/LoadingScreen.d.ts.map +0 -0
  693. /package/{dist/components → components}/LoadingScreen.js +0 -0
  694. /package/{dist/components → components}/LogsPageView.d.ts +0 -0
  695. /package/{dist/components → components}/LogsPageView.d.ts.map +0 -0
  696. /package/{dist/components → components}/LogsPageView.js +0 -0
  697. /package/{dist/components → components}/LogsView.d.ts +0 -0
  698. /package/{dist/components → components}/LogsView.d.ts.map +0 -0
  699. /package/{dist/components → components}/LogsView.js +0 -0
  700. /package/{dist/components → components}/MediaGalleryView.d.ts +0 -0
  701. /package/{dist/components → components}/MediaGalleryView.d.ts.map +0 -0
  702. /package/{dist/components → components}/MediaGalleryView.js +0 -0
  703. /package/{dist/components → components}/MediaSettingsSection.d.ts +0 -0
  704. /package/{dist/components → components}/MediaSettingsSection.d.ts.map +0 -0
  705. /package/{dist/components → components}/MediaSettingsSection.js +0 -0
  706. /package/{dist/components → components}/MessageContent.d.ts +0 -0
  707. /package/{dist/components → components}/MessageContent.d.ts.map +0 -0
  708. /package/{dist/components → components}/MessageContent.js +0 -0
  709. /package/{dist/components → components}/OnboardingWizard.d.ts +0 -0
  710. /package/{dist/components → components}/PairingView.d.ts +0 -0
  711. /package/{dist/components → components}/PairingView.d.ts.map +0 -0
  712. /package/{dist/components → components}/PairingView.js +0 -0
  713. /package/{dist/components → components}/PermissionsSection.d.ts +0 -0
  714. /package/{dist/components → components}/PermissionsSection.d.ts.map +0 -0
  715. /package/{dist/components → components}/PermissionsSection.js +0 -0
  716. /package/{dist/components → components}/PluginsPageView.d.ts +0 -0
  717. /package/{dist/components → components}/PluginsPageView.d.ts.map +0 -0
  718. /package/{dist/components → components}/PluginsPageView.js +0 -0
  719. /package/{dist/components → components}/PluginsView.d.ts +0 -0
  720. /package/{dist/components → components}/ProviderSwitcher.d.ts +0 -0
  721. /package/{dist/components → components}/ProviderSwitcher.d.ts.map +0 -0
  722. /package/{dist/components → components}/ProviderSwitcher.js +0 -0
  723. /package/{dist/components → components}/RestartBanner.d.ts +0 -0
  724. /package/{dist/components → components}/RestartBanner.d.ts.map +0 -0
  725. /package/{dist/components → components}/RestartBanner.js +0 -0
  726. /package/{dist/components → components}/RuntimeView.d.ts +0 -0
  727. /package/{dist/components → components}/RuntimeView.d.ts.map +0 -0
  728. /package/{dist/components → components}/RuntimeView.js +0 -0
  729. /package/{dist/components → components}/SaveCommandModal.d.ts +0 -0
  730. /package/{dist/components → components}/SaveCommandModal.d.ts.map +0 -0
  731. /package/{dist/components → components}/SaveCommandModal.js +0 -0
  732. /package/{dist/components → components}/SecretsView.d.ts +0 -0
  733. /package/{dist/components → components}/SecretsView.d.ts.map +0 -0
  734. /package/{dist/components → components}/SecretsView.js +0 -0
  735. /package/{dist/components → components}/SettingsView.d.ts +0 -0
  736. /package/{dist/components → components}/SettingsView.d.ts.map +0 -0
  737. /package/{dist/components → components}/SettingsView.js +0 -0
  738. /package/{dist/components → components}/ShellOverlays.d.ts +0 -0
  739. /package/{dist/components → components}/ShellOverlays.d.ts.map +0 -0
  740. /package/{dist/components → components}/ShellOverlays.js +0 -0
  741. /package/{dist/components → components}/ShortcutsOverlay.d.ts +0 -0
  742. /package/{dist/components → components}/ShortcutsOverlay.d.ts.map +0 -0
  743. /package/{dist/components → components}/ShortcutsOverlay.js +0 -0
  744. /package/{dist/components → components}/SkillsView.d.ts +0 -0
  745. /package/{dist/components → components}/SkillsView.d.ts.map +0 -0
  746. /package/{dist/components → components}/SkillsView.js +0 -0
  747. /package/{dist/components → components}/StartupFailureView.d.ts +0 -0
  748. /package/{dist/components → components}/StartupFailureView.d.ts.map +0 -0
  749. /package/{dist/components → components}/StartupFailureView.js +0 -0
  750. /package/{dist/components → components}/StreamView.d.ts +0 -0
  751. /package/{dist/components → components}/StreamView.d.ts.map +0 -0
  752. /package/{dist/components → components}/StreamView.js +0 -0
  753. /package/{dist/components → components}/StripeEmbeddedCheckout.d.ts +0 -0
  754. /package/{dist/components → components}/StripeEmbeddedCheckout.d.ts.map +0 -0
  755. /package/{dist/components → components}/StripeEmbeddedCheckout.js +0 -0
  756. /package/{dist/components → components}/SubscriptionStatus.d.ts +0 -0
  757. /package/{dist/components → components}/SubscriptionStatus.d.ts.map +0 -0
  758. /package/{dist/components → components}/SubscriptionStatus.js +0 -0
  759. /package/{dist/components → components}/SystemWarningBanner.d.ts +0 -0
  760. /package/{dist/components → components}/SystemWarningBanner.d.ts.map +0 -0
  761. /package/{dist/components → components}/SystemWarningBanner.js +0 -0
  762. /package/{dist/components → components}/ThemeToggle.d.ts +0 -0
  763. /package/{dist/components → components}/ThemeToggle.d.ts.map +0 -0
  764. /package/{dist/components → components}/ThemeToggle.js +0 -0
  765. /package/{dist/components → components}/TrajectoriesView.d.ts +0 -0
  766. /package/{dist/components → components}/TrajectoriesView.d.ts.map +0 -0
  767. /package/{dist/components → components}/TrajectoriesView.js +0 -0
  768. /package/{dist/components → components}/TrajectoryDetailView.d.ts +0 -0
  769. /package/{dist/components → components}/TrajectoryDetailView.d.ts.map +0 -0
  770. /package/{dist/components → components}/TrajectoryDetailView.js +0 -0
  771. /package/{dist/components → components}/TriggersView.d.ts +0 -0
  772. /package/{dist/components → components}/TriggersView.d.ts.map +0 -0
  773. /package/{dist/components → components}/TriggersView.js +0 -0
  774. /package/{dist/components → components}/VectorBrowserView.d.ts +0 -0
  775. /package/{dist/components → components}/VectorBrowserView.d.ts.map +0 -0
  776. /package/{dist/components → components}/VectorBrowserView.js +0 -0
  777. /package/{dist/components → components}/VoiceConfigView.d.ts +0 -0
  778. /package/{dist/components → components}/VoiceConfigView.d.ts.map +0 -0
  779. /package/{dist/components → components}/VoiceConfigView.js +0 -0
  780. /package/{dist/components → components}/VrmStage.d.ts +0 -0
  781. /package/{dist/components → components}/VrmStage.d.ts.map +0 -0
  782. /package/{dist/components → components}/VrmStage.js +0 -0
  783. /package/{dist/components → components}/WhatsAppQrOverlay.d.ts +0 -0
  784. /package/{dist/components → components}/WhatsAppQrOverlay.d.ts.map +0 -0
  785. /package/{dist/components → components}/WhatsAppQrOverlay.js +0 -0
  786. /package/{dist/components → components}/apps/AppDetailPane.d.ts +0 -0
  787. /package/{dist/components → components}/apps/AppDetailPane.d.ts.map +0 -0
  788. /package/{dist/components → components}/apps/AppDetailPane.js +0 -0
  789. /package/{dist/components → components}/apps/AppsCatalogGrid.d.ts +0 -0
  790. /package/{dist/components → components}/apps/AppsCatalogGrid.d.ts.map +0 -0
  791. /package/{dist/components → components}/apps/AppsCatalogGrid.js +0 -0
  792. /package/{dist/components → components}/apps/extensions/registry.d.ts +0 -0
  793. /package/{dist/components → components}/apps/extensions/registry.d.ts.map +0 -0
  794. /package/{dist/components → components}/apps/extensions/registry.js +0 -0
  795. /package/{dist/components → components}/apps/extensions/types.d.ts +0 -0
  796. /package/{dist/components → components}/apps/extensions/types.d.ts.map +0 -0
  797. /package/{dist/components → components}/apps/extensions/types.js +0 -0
  798. /package/{dist/components → components}/apps/helpers.d.ts +0 -0
  799. /package/{dist/components → components}/apps/helpers.d.ts.map +0 -0
  800. /package/{dist/components → components}/apps/helpers.js +0 -0
  801. /package/{dist/components → components}/avatar/VrmAnimationLoader.d.ts +0 -0
  802. /package/{dist/components → components}/avatar/VrmAnimationLoader.d.ts.map +0 -0
  803. /package/{dist/components → components}/avatar/VrmAnimationLoader.js +0 -0
  804. /package/{dist/components → components}/avatar/VrmBlinkController.d.ts +0 -0
  805. /package/{dist/components → components}/avatar/VrmBlinkController.d.ts.map +0 -0
  806. /package/{dist/components → components}/avatar/VrmBlinkController.js +0 -0
  807. /package/{dist/components → components}/avatar/VrmCameraManager.d.ts +0 -0
  808. /package/{dist/components → components}/avatar/VrmCameraManager.d.ts.map +0 -0
  809. /package/{dist/components → components}/avatar/VrmCameraManager.js +0 -0
  810. /package/{dist/components → components}/avatar/VrmFootShadow.d.ts +0 -0
  811. /package/{dist/components → components}/avatar/VrmFootShadow.d.ts.map +0 -0
  812. /package/{dist/components → components}/avatar/VrmFootShadow.js +0 -0
  813. /package/{dist/components → components}/avatar/mixamoVRMRigMap.d.ts +0 -0
  814. /package/{dist/components → components}/avatar/mixamoVRMRigMap.d.ts.map +0 -0
  815. /package/{dist/components → components}/avatar/mixamoVRMRigMap.js +0 -0
  816. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.d.ts +0 -0
  817. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.d.ts.map +0 -0
  818. /package/{dist/components → components}/avatar/retargetMixamoFbxToVrm.js +0 -0
  819. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.d.ts +0 -0
  820. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.d.ts.map +0 -0
  821. /package/{dist/components → components}/avatar/retargetMixamoGltfToVrm.js +0 -0
  822. /package/{dist/components → components}/chainConfig.d.ts +0 -0
  823. /package/{dist/components → components}/chainConfig.d.ts.map +0 -0
  824. /package/{dist/components → components}/chainConfig.js +0 -0
  825. /package/{dist/components → components}/companion/CompanionHeader.d.ts +0 -0
  826. /package/{dist/components → components}/companion/CompanionHeader.d.ts.map +0 -0
  827. /package/{dist/components → components}/companion/CompanionHeader.js +0 -0
  828. /package/{dist/components → components}/companion/CompanionSceneHost.d.ts +0 -0
  829. /package/{dist/components → components}/companion/CompanionSceneHost.d.ts.map +0 -0
  830. /package/{dist/components → components}/companion/CompanionSceneHost.js +0 -0
  831. /package/{dist/components → components}/companion/VrmStage.d.ts +0 -0
  832. /package/{dist/components → components}/companion/VrmStage.d.ts.map +0 -0
  833. /package/{dist/components → components}/companion/VrmStage.js +0 -0
  834. /package/{dist/components → components}/companion/index.d.ts +0 -0
  835. /package/{dist/components → components}/companion/index.d.ts.map +0 -0
  836. /package/{dist/components → components}/companion/index.js +0 -0
  837. /package/{dist/components → components}/companion/walletUtils.d.ts +0 -0
  838. /package/{dist/components → components}/companion/walletUtils.d.ts.map +0 -0
  839. /package/{dist/components → components}/companion/walletUtils.js +0 -0
  840. /package/{dist/components → components}/companion-shell-styles.d.ts +0 -0
  841. /package/{dist/components → components}/companion-shell-styles.d.ts.map +0 -0
  842. /package/{dist/components → components}/companion-shell-styles.js +0 -0
  843. /package/{dist/components → components}/confirm-delete-control.d.ts +0 -0
  844. /package/{dist/components → components}/confirm-delete-control.d.ts.map +0 -0
  845. /package/{dist/components → components}/confirm-delete-control.js +0 -0
  846. /package/{dist/components → components}/conversations/ConversationListItem.d.ts +0 -0
  847. /package/{dist/components → components}/conversations/ConversationListItem.d.ts.map +0 -0
  848. /package/{dist/components → components}/conversations/ConversationListItem.js +0 -0
  849. /package/{dist/components → components}/conversations/conversation-utils.d.ts +0 -0
  850. /package/{dist/components → components}/conversations/conversation-utils.d.ts.map +0 -0
  851. /package/{dist/components → components}/conversations/conversation-utils.js +0 -0
  852. /package/{dist/components → components}/format.d.ts +0 -0
  853. /package/{dist/components → components}/format.d.ts.map +0 -0
  854. /package/{dist/components → components}/format.js +0 -0
  855. /package/{dist/components → components}/inventory/CopyableAddress.d.ts +0 -0
  856. /package/{dist/components → components}/inventory/CopyableAddress.d.ts.map +0 -0
  857. /package/{dist/components → components}/inventory/CopyableAddress.js +0 -0
  858. /package/{dist/components → components}/inventory/InventoryToolbar.d.ts +0 -0
  859. /package/{dist/components → components}/inventory/InventoryToolbar.d.ts.map +0 -0
  860. /package/{dist/components → components}/inventory/InventoryToolbar.js +0 -0
  861. /package/{dist/components → components}/inventory/NftGrid.d.ts +0 -0
  862. /package/{dist/components → components}/inventory/NftGrid.d.ts.map +0 -0
  863. /package/{dist/components → components}/inventory/NftGrid.js +0 -0
  864. /package/{dist/components → components}/inventory/TokenLogo.d.ts +0 -0
  865. /package/{dist/components → components}/inventory/TokenLogo.d.ts.map +0 -0
  866. /package/{dist/components → components}/inventory/TokenLogo.js +0 -0
  867. /package/{dist/components → components}/inventory/TokensTable.d.ts +0 -0
  868. /package/{dist/components → components}/inventory/TokensTable.d.ts.map +0 -0
  869. /package/{dist/components → components}/inventory/TokensTable.js +0 -0
  870. /package/{dist/components → components}/inventory/constants.d.ts +0 -0
  871. /package/{dist/components → components}/inventory/constants.d.ts.map +0 -0
  872. /package/{dist/components → components}/inventory/constants.js +0 -0
  873. /package/{dist/components → components}/inventory/index.d.ts +0 -0
  874. /package/{dist/components → components}/inventory/index.d.ts.map +0 -0
  875. /package/{dist/components → components}/inventory/index.js +0 -0
  876. /package/{dist/components → components}/inventory/media-url.d.ts +0 -0
  877. /package/{dist/components → components}/inventory/media-url.d.ts.map +0 -0
  878. /package/{dist/components → components}/inventory/media-url.js +0 -0
  879. /package/{dist/components → components}/inventory/useInventoryData.d.ts +0 -0
  880. /package/{dist/components → components}/inventory/useInventoryData.d.ts.map +0 -0
  881. /package/{dist/components → components}/inventory/useInventoryData.js +0 -0
  882. /package/{dist/components → components}/knowledge-upload-image.d.ts +0 -0
  883. /package/{dist/components → components}/knowledge-upload-image.d.ts.map +0 -0
  884. /package/{dist/components → components}/knowledge-upload-image.js +0 -0
  885. /package/{dist/components → components}/labels.d.ts +0 -0
  886. /package/{dist/components → components}/labels.d.ts.map +0 -0
  887. /package/{dist/components → components}/labels.js +0 -0
  888. /package/{dist/components → components}/onboarding/ActivateStep.d.ts +0 -0
  889. /package/{dist/components → components}/onboarding/ActivateStep.d.ts.map +0 -0
  890. /package/{dist/components → components}/onboarding/ActivateStep.js +0 -0
  891. /package/{dist/components → components}/onboarding/ConnectionStep.d.ts +0 -0
  892. /package/{dist/components → components}/onboarding/IdentityStep.d.ts +0 -0
  893. /package/{dist/components → components}/onboarding/IdentityStep.d.ts.map +0 -0
  894. /package/{dist/components → components}/onboarding/IdentityStep.js +0 -0
  895. /package/{dist/components → components}/onboarding/OnboardingPanel.d.ts +0 -0
  896. /package/{dist/components → components}/onboarding/OnboardingPanel.d.ts.map +0 -0
  897. /package/{dist/components → components}/onboarding/OnboardingPanel.js +0 -0
  898. /package/{dist/components → components}/onboarding/OnboardingStepNav.d.ts +0 -0
  899. /package/{dist/components → components}/onboarding/OnboardingStepNav.d.ts.map +0 -0
  900. /package/{dist/components → components}/onboarding/OnboardingStepNav.js +0 -0
  901. /package/{dist/components → components}/onboarding/PermissionsStep.d.ts +0 -0
  902. /package/{dist/components → components}/onboarding/PermissionsStep.d.ts.map +0 -0
  903. /package/{dist/components → components}/onboarding/PermissionsStep.js +0 -0
  904. /package/{dist/components → components}/onboarding/RpcStep.d.ts +0 -0
  905. /package/{dist/components → components}/onboarding/RpcStep.d.ts.map +0 -0
  906. /package/{dist/components → components}/onboarding/RpcStep.js +0 -0
  907. /package/{dist/components → components}/permissions/PermissionIcon.d.ts +0 -0
  908. /package/{dist/components → components}/permissions/PermissionIcon.d.ts.map +0 -0
  909. /package/{dist/components → components}/permissions/PermissionIcon.js +0 -0
  910. /package/{dist/components → components}/permissions/StreamingPermissions.d.ts +0 -0
  911. /package/{dist/components → components}/plugins/showcase-data.d.ts +0 -0
  912. /package/{dist/components → components}/plugins/showcase-data.d.ts.map +0 -0
  913. /package/{dist/components → components}/plugins/showcase-data.js +0 -0
  914. /package/{dist/components → components}/shared/ShellHeaderControls.d.ts +0 -0
  915. /package/{dist/components → components}/shared/ShellHeaderControls.d.ts.map +0 -0
  916. /package/{dist/components → components}/shared/ShellHeaderControls.js +0 -0
  917. /package/{dist/components → components}/shared-companion-scene-context.d.ts +0 -0
  918. /package/{dist/components → components}/shared-companion-scene-context.d.ts.map +0 -0
  919. /package/{dist/components → components}/shared-companion-scene-context.js +0 -0
  920. /package/{dist/components → components}/skeletons.d.ts +0 -0
  921. /package/{dist/components → components}/skeletons.d.ts.map +0 -0
  922. /package/{dist/components → components}/skeletons.js +0 -0
  923. /package/{dist/components → components}/stream/ActivityFeed.d.ts +0 -0
  924. /package/{dist/components → components}/stream/ActivityFeed.d.ts.map +0 -0
  925. /package/{dist/components → components}/stream/ActivityFeed.js +0 -0
  926. /package/{dist/components → components}/stream/AvatarPip.d.ts +0 -0
  927. /package/{dist/components → components}/stream/AvatarPip.d.ts.map +0 -0
  928. /package/{dist/components → components}/stream/AvatarPip.js +0 -0
  929. /package/{dist/components → components}/stream/ChatContent.d.ts +0 -0
  930. /package/{dist/components → components}/stream/ChatContent.d.ts.map +0 -0
  931. /package/{dist/components → components}/stream/ChatContent.js +0 -0
  932. /package/{dist/components → components}/stream/ChatTicker.d.ts +0 -0
  933. /package/{dist/components → components}/stream/ChatTicker.d.ts.map +0 -0
  934. /package/{dist/components → components}/stream/ChatTicker.js +0 -0
  935. /package/{dist/components → components}/stream/IdleContent.d.ts +0 -0
  936. /package/{dist/components → components}/stream/IdleContent.d.ts.map +0 -0
  937. /package/{dist/components → components}/stream/IdleContent.js +0 -0
  938. /package/{dist/components → components}/stream/StatusBar.d.ts +0 -0
  939. /package/{dist/components → components}/stream/StatusBar.d.ts.map +0 -0
  940. /package/{dist/components → components}/stream/StatusBar.js +0 -0
  941. /package/{dist/components → components}/stream/StreamSettings.d.ts +0 -0
  942. /package/{dist/components → components}/stream/StreamSettings.d.ts.map +0 -0
  943. /package/{dist/components → components}/stream/StreamSettings.js +0 -0
  944. /package/{dist/components → components}/stream/StreamTerminal.d.ts +0 -0
  945. /package/{dist/components → components}/stream/StreamTerminal.d.ts.map +0 -0
  946. /package/{dist/components → components}/stream/StreamTerminal.js +0 -0
  947. /package/{dist/components → components}/stream/StreamVoiceConfig.d.ts +0 -0
  948. /package/{dist/components → components}/stream/StreamVoiceConfig.d.ts.map +0 -0
  949. /package/{dist/components → components}/stream/StreamVoiceConfig.js +0 -0
  950. /package/{dist/components → components}/stream/helpers.d.ts +0 -0
  951. /package/{dist/components → components}/stream/helpers.d.ts.map +0 -0
  952. /package/{dist/components → components}/stream/helpers.js +0 -0
  953. /package/{dist/components → components}/stream/overlays/OverlayLayer.d.ts +0 -0
  954. /package/{dist/components → components}/stream/overlays/OverlayLayer.d.ts.map +0 -0
  955. /package/{dist/components → components}/stream/overlays/OverlayLayer.js +0 -0
  956. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.d.ts +0 -0
  957. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.d.ts.map +0 -0
  958. /package/{dist/components → components}/stream/overlays/built-in/ActionTickerWidget.js +0 -0
  959. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.d.ts +0 -0
  960. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.d.ts.map +0 -0
  961. /package/{dist/components → components}/stream/overlays/built-in/AlertPopupWidget.js +0 -0
  962. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.d.ts +0 -0
  963. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.d.ts.map +0 -0
  964. /package/{dist/components → components}/stream/overlays/built-in/BrandingWidget.js +0 -0
  965. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.d.ts +0 -0
  966. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.d.ts.map +0 -0
  967. /package/{dist/components → components}/stream/overlays/built-in/CustomHtmlWidget.js +0 -0
  968. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.d.ts +0 -0
  969. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.d.ts.map +0 -0
  970. /package/{dist/components → components}/stream/overlays/built-in/PeonGlassWidget.js +0 -0
  971. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.d.ts +0 -0
  972. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.d.ts.map +0 -0
  973. /package/{dist/components → components}/stream/overlays/built-in/PeonHudWidget.js +0 -0
  974. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.d.ts +0 -0
  975. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.d.ts.map +0 -0
  976. /package/{dist/components → components}/stream/overlays/built-in/PeonSakuraWidget.js +0 -0
  977. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.d.ts +0 -0
  978. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.d.ts.map +0 -0
  979. /package/{dist/components → components}/stream/overlays/built-in/ThoughtBubbleWidget.js +0 -0
  980. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.d.ts +0 -0
  981. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.d.ts.map +0 -0
  982. /package/{dist/components → components}/stream/overlays/built-in/ViewerCountWidget.js +0 -0
  983. /package/{dist/components → components}/stream/overlays/built-in/index.d.ts +0 -0
  984. /package/{dist/components → components}/stream/overlays/built-in/index.d.ts.map +0 -0
  985. /package/{dist/components → components}/stream/overlays/built-in/index.js +0 -0
  986. /package/{dist/components → components}/stream/overlays/registry.d.ts +0 -0
  987. /package/{dist/components → components}/stream/overlays/registry.d.ts.map +0 -0
  988. /package/{dist/components → components}/stream/overlays/registry.js +0 -0
  989. /package/{dist/components → components}/stream/overlays/types.d.ts +0 -0
  990. /package/{dist/components → components}/stream/overlays/types.d.ts.map +0 -0
  991. /package/{dist/components → components}/stream/overlays/types.js +0 -0
  992. /package/{dist/components → components}/stream/overlays/useOverlayLayout.d.ts +0 -0
  993. /package/{dist/components → components}/stream/overlays/useOverlayLayout.d.ts.map +0 -0
  994. /package/{dist/components → components}/stream/overlays/useOverlayLayout.js +0 -0
  995. /package/{dist/components → components}/trajectory-format.d.ts +0 -0
  996. /package/{dist/components → components}/trajectory-format.d.ts.map +0 -0
  997. /package/{dist/components → components}/trajectory-format.js +0 -0
  998. /package/{dist/components → components}/ui-badges.d.ts +0 -0
  999. /package/{dist/components → components}/ui-badges.d.ts.map +0 -0
  1000. /package/{dist/components → components}/ui-badges.js +0 -0
  1001. /package/{dist/components → components}/ui-switch.d.ts +0 -0
  1002. /package/{dist/components → components}/ui-switch.d.ts.map +0 -0
  1003. /package/{dist/components → components}/vector-browser-three.d.ts +0 -0
  1004. /package/{dist/components → components}/vector-browser-three.d.ts.map +0 -0
  1005. /package/{dist/components → components}/vector-browser-three.js +0 -0
  1006. /package/{dist/config → config}/branding.d.ts +0 -0
  1007. /package/{dist/config → config}/branding.d.ts.map +0 -0
  1008. /package/{dist/config → config}/branding.js +0 -0
  1009. /package/{dist/config → config}/config-catalog.d.ts +0 -0
  1010. /package/{dist/config → config}/config-catalog.d.ts.map +0 -0
  1011. /package/{dist/config → config}/config-catalog.js +0 -0
  1012. /package/{dist/config → config}/config-field.d.ts +0 -0
  1013. /package/{dist/config → config}/config-field.d.ts.map +0 -0
  1014. /package/{dist/config → config}/config-field.js +0 -0
  1015. /package/{dist/config → config}/config-renderer.d.ts +0 -0
  1016. /package/{dist/config → config}/config-renderer.d.ts.map +0 -0
  1017. /package/{dist/config → config}/config-renderer.js +0 -0
  1018. /package/{dist/config → config}/index.d.ts +0 -0
  1019. /package/{dist/config → config}/index.d.ts.map +0 -0
  1020. /package/{dist/config → config}/index.js +0 -0
  1021. /package/{dist/config → config}/ui-renderer.d.ts +0 -0
  1022. /package/{dist/config → config}/ui-renderer.d.ts.map +0 -0
  1023. /package/{dist/config → config}/ui-renderer.js +0 -0
  1024. /package/{dist/config → config}/ui-spec.d.ts +0 -0
  1025. /package/{dist/config → config}/ui-spec.d.ts.map +0 -0
  1026. /package/{dist/config → config}/ui-spec.js +0 -0
  1027. /package/{dist/events → events}/index.d.ts +0 -0
  1028. /package/{dist/events → events}/index.d.ts.map +0 -0
  1029. /package/{dist/events → events}/index.js +0 -0
  1030. /package/{dist/hooks → hooks}/index.d.ts +0 -0
  1031. /package/{dist/hooks → hooks}/index.d.ts.map +0 -0
  1032. /package/{dist/hooks → hooks}/index.js +0 -0
  1033. /package/{dist/hooks → hooks}/useBugReport.d.ts +0 -0
  1034. /package/{dist/hooks → hooks}/useBugReport.d.ts.map +0 -0
  1035. /package/{dist/hooks → hooks}/useBugReport.js +0 -0
  1036. /package/{dist/hooks → hooks}/useCanvasWindow.d.ts +0 -0
  1037. /package/{dist/hooks → hooks}/useCanvasWindow.d.ts.map +0 -0
  1038. /package/{dist/hooks → hooks}/useCanvasWindow.js +0 -0
  1039. /package/{dist/hooks → hooks}/useChatAvatarVoice.d.ts +0 -0
  1040. /package/{dist/hooks → hooks}/useChatAvatarVoice.d.ts.map +0 -0
  1041. /package/{dist/hooks → hooks}/useChatAvatarVoice.js +0 -0
  1042. /package/{dist/hooks → hooks}/useClickOutside.d.ts +0 -0
  1043. /package/{dist/hooks → hooks}/useClickOutside.d.ts.map +0 -0
  1044. /package/{dist/hooks → hooks}/useClickOutside.js +0 -0
  1045. /package/{dist/hooks → hooks}/useContextMenu.d.ts +0 -0
  1046. /package/{dist/hooks → hooks}/useContextMenu.d.ts.map +0 -0
  1047. /package/{dist/hooks → hooks}/useContextMenu.js +0 -0
  1048. /package/{dist/hooks → hooks}/useKeyboardShortcuts.d.ts +0 -0
  1049. /package/{dist/hooks → hooks}/useKeyboardShortcuts.d.ts.map +0 -0
  1050. /package/{dist/hooks → hooks}/useKeyboardShortcuts.js +0 -0
  1051. /package/{dist/hooks → hooks}/useLifoSync.d.ts +0 -0
  1052. /package/{dist/hooks → hooks}/useLifoSync.d.ts.map +0 -0
  1053. /package/{dist/hooks → hooks}/useLifoSync.js +0 -0
  1054. /package/{dist/hooks → hooks}/useMemoryMonitor.d.ts +0 -0
  1055. /package/{dist/hooks → hooks}/useMemoryMonitor.d.ts.map +0 -0
  1056. /package/{dist/hooks → hooks}/useMemoryMonitor.js +0 -0
  1057. /package/{dist/hooks → hooks}/useRenderGuard.d.ts +0 -0
  1058. /package/{dist/hooks → hooks}/useRenderGuard.d.ts.map +0 -0
  1059. /package/{dist/hooks → hooks}/useRenderGuard.js +0 -0
  1060. /package/{dist/hooks → hooks}/useRetakeCapture.d.ts +0 -0
  1061. /package/{dist/hooks → hooks}/useRetakeCapture.d.ts.map +0 -0
  1062. /package/{dist/hooks → hooks}/useRetakeCapture.js +0 -0
  1063. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.d.ts +0 -0
  1064. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.d.ts.map +0 -0
  1065. /package/{dist/hooks → hooks}/useStreamPopoutNavigation.js +0 -0
  1066. /package/{dist/hooks → hooks}/useTimeout.d.ts +0 -0
  1067. /package/{dist/hooks → hooks}/useTimeout.d.ts.map +0 -0
  1068. /package/{dist/hooks → hooks}/useTimeout.js +0 -0
  1069. /package/{dist/hooks → hooks}/useVoiceChat.d.ts +0 -0
  1070. /package/{dist/hooks → hooks}/useVoiceChat.d.ts.map +0 -0
  1071. /package/{dist/hooks → hooks}/useVoiceChat.js +0 -0
  1072. /package/{dist/hooks → hooks}/useWhatsAppPairing.d.ts +0 -0
  1073. /package/{dist/hooks → hooks}/useWhatsAppPairing.d.ts.map +0 -0
  1074. /package/{dist/hooks → hooks}/useWhatsAppPairing.js +0 -0
  1075. /package/{dist/i18n → i18n}/index.d.ts +0 -0
  1076. /package/{dist/i18n → i18n}/index.d.ts.map +0 -0
  1077. /package/{dist/i18n → i18n}/index.js +0 -0
  1078. /package/{dist/i18n → i18n}/messages.d.ts +0 -0
  1079. /package/{dist/i18n → i18n}/messages.d.ts.map +0 -0
  1080. /package/{dist/i18n → i18n}/messages.js +0 -0
  1081. /package/{dist/index.d.ts → index.d.ts} +0 -0
  1082. /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  1083. /package/{dist/index.js → index.js} +0 -0
  1084. /package/{dist/navigation → navigation}/index.d.ts +0 -0
  1085. /package/{dist/navigation → navigation}/index.d.ts.map +0 -0
  1086. /package/{dist/navigation → navigation}/index.js +0 -0
  1087. /package/{dist/onboarding-config.d.ts → onboarding-config.d.ts} +0 -0
  1088. /package/{dist/onboarding-config.d.ts.map → onboarding-config.d.ts.map} +0 -0
  1089. /package/{dist/onboarding-config.js → onboarding-config.js} +0 -0
  1090. /package/{dist/platform → platform}/browser-launch.d.ts +0 -0
  1091. /package/{dist/platform → platform}/browser-launch.d.ts.map +0 -0
  1092. /package/{dist/platform → platform}/browser-launch.js +0 -0
  1093. /package/{dist/platform → platform}/index.d.ts +0 -0
  1094. /package/{dist/platform → platform}/index.d.ts.map +0 -0
  1095. /package/{dist/platform → platform}/index.js +0 -0
  1096. /package/{dist/platform → platform}/init.d.ts +0 -0
  1097. /package/{dist/platform → platform}/init.d.ts.map +0 -0
  1098. /package/{dist/platform → platform}/init.js +0 -0
  1099. /package/{dist/platform → platform}/lifo.d.ts +0 -0
  1100. /package/{dist/platform → platform}/lifo.d.ts.map +0 -0
  1101. /package/{dist/platform → platform}/lifo.js +0 -0
  1102. /package/{dist/providers → providers}/index.d.ts +0 -0
  1103. /package/{dist/providers → providers}/index.d.ts.map +0 -0
  1104. /package/{dist/providers → providers}/index.js +0 -0
  1105. /package/{dist/shell-params.d.ts → shell-params.d.ts} +0 -0
  1106. /package/{dist/shell-params.d.ts.map → shell-params.d.ts.map} +0 -0
  1107. /package/{dist/shell-params.js → shell-params.js} +0 -0
  1108. /package/{dist/state → state}/AppContext.d.ts +0 -0
  1109. /package/{dist/state → state}/index.d.ts +0 -0
  1110. /package/{dist/state → state}/index.d.ts.map +0 -0
  1111. /package/{dist/state → state}/index.js +0 -0
  1112. /package/{dist/state → state}/internal.d.ts +0 -0
  1113. /package/{dist/state → state}/internal.d.ts.map +0 -0
  1114. /package/{dist/state → state}/internal.js +0 -0
  1115. /package/{dist/state → state}/onboarding-resume.d.ts +0 -0
  1116. /package/{dist/state → state}/onboarding-resume.d.ts.map +0 -0
  1117. /package/{dist/state → state}/onboarding-resume.js +0 -0
  1118. /package/{dist/state → state}/parsers.d.ts +0 -0
  1119. /package/{dist/state → state}/parsers.d.ts.map +0 -0
  1120. /package/{dist/state → state}/parsers.js +0 -0
  1121. /package/{dist/state → state}/persistence.d.ts +0 -0
  1122. /package/{dist/state → state}/persistence.d.ts.map +0 -0
  1123. /package/{dist/state → state}/persistence.js +0 -0
  1124. /package/{dist/state → state}/shell-routing.d.ts +0 -0
  1125. /package/{dist/state → state}/shell-routing.d.ts.map +0 -0
  1126. /package/{dist/state → state}/shell-routing.js +0 -0
  1127. /package/{dist/state → state}/types.d.ts +0 -0
  1128. /package/{dist/state → state}/types.d.ts.map +0 -0
  1129. /package/{dist/state → state}/types.js +0 -0
  1130. /package/{dist/state → state}/ui-preferences.d.ts +0 -0
  1131. /package/{dist/state → state}/ui-preferences.d.ts.map +0 -0
  1132. /package/{dist/state → state}/ui-preferences.js +0 -0
  1133. /package/{dist/state → state}/useApp.d.ts +0 -0
  1134. /package/{dist/state → state}/useApp.d.ts.map +0 -0
  1135. /package/{dist/state → state}/useApp.js +0 -0
  1136. /package/{dist/state → state}/vrm.d.ts +0 -0
  1137. /package/{dist/state → state}/vrm.d.ts.map +0 -0
  1138. /package/{dist/state → state}/vrm.js +0 -0
  1139. /package/{dist/styles → styles}/base.css +0 -0
  1140. /package/{dist/styles → styles}/styles.css +0 -0
  1141. /package/{dist/styles → styles}/xterm.css +0 -0
  1142. /package/{dist/types → types}/index.d.ts +0 -0
  1143. /package/{dist/types → types}/index.d.ts.map +0 -0
  1144. /package/{dist/types → types}/index.js +0 -0
  1145. /package/{dist/utils → utils}/asset-url.d.ts +0 -0
  1146. /package/{dist/utils → utils}/asset-url.d.ts.map +0 -0
  1147. /package/{dist/utils → utils}/asset-url.js +0 -0
  1148. /package/{dist/utils → utils}/assistant-text.d.ts +0 -0
  1149. /package/{dist/utils → utils}/assistant-text.d.ts.map +0 -0
  1150. /package/{dist/utils → utils}/assistant-text.js +0 -0
  1151. /package/{dist/utils → utils}/clipboard.d.ts +0 -0
  1152. /package/{dist/utils → utils}/clipboard.d.ts.map +0 -0
  1153. /package/{dist/utils → utils}/clipboard.js +0 -0
  1154. /package/{dist/utils → utils}/desktop-dialogs.d.ts +0 -0
  1155. /package/{dist/utils → utils}/desktop-dialogs.d.ts.map +0 -0
  1156. /package/{dist/utils → utils}/desktop-dialogs.js +0 -0
  1157. /package/{dist/utils → utils}/eliza-globals.d.ts +0 -0
  1158. /package/{dist/utils → utils}/eliza-globals.d.ts.map +0 -0
  1159. /package/{dist/utils → utils}/eliza-globals.js +0 -0
  1160. /package/{dist/utils → utils}/index.d.ts +0 -0
  1161. /package/{dist/utils → utils}/index.d.ts.map +0 -0
  1162. /package/{dist/utils → utils}/index.js +0 -0
  1163. /package/{dist/utils → utils}/number-parsing.d.ts +0 -0
  1164. /package/{dist/utils → utils}/number-parsing.d.ts.map +0 -0
  1165. /package/{dist/utils → utils}/number-parsing.js +0 -0
  1166. /package/{dist/utils → utils}/openExternalUrl.d.ts +0 -0
  1167. /package/{dist/utils → utils}/openExternalUrl.d.ts.map +0 -0
  1168. /package/{dist/utils → utils}/openExternalUrl.js +0 -0
  1169. /package/{dist/utils → utils}/spoken-text.d.ts +0 -0
  1170. /package/{dist/utils → utils}/spoken-text.d.ts.map +0 -0
  1171. /package/{dist/utils → utils}/spoken-text.js +0 -0
  1172. /package/{dist/utils → utils}/streaming-text.d.ts +0 -0
  1173. /package/{dist/utils → utils}/streaming-text.d.ts.map +0 -0
  1174. /package/{dist/utils → utils}/streaming-text.js +0 -0
  1175. /package/{dist/voice → voice}/index.d.ts +0 -0
  1176. /package/{dist/voice → voice}/index.d.ts.map +0 -0
  1177. /package/{dist/voice → voice}/index.js +0 -0
  1178. /package/{dist/voice → voice}/types.d.ts +0 -0
  1179. /package/{dist/voice → voice}/types.d.ts.map +0 -0
  1180. /package/{dist/voice → voice}/types.js +0 -0
  1181. /package/{dist/wallet-rpc.d.ts → wallet-rpc.d.ts} +0 -0
  1182. /package/{dist/wallet-rpc.d.ts.map → wallet-rpc.d.ts.map} +0 -0
  1183. /package/{dist/wallet-rpc.js → wallet-rpc.js} +0 -0
@@ -1,1245 +0,0 @@
1
- /**
2
- * Character Save Journey Tests
3
- *
4
- * Comprehensive tests for character editing, saving, and error handling.
5
- * Covers:
6
- * 1. Character loading
7
- * 2. Field editing
8
- * 3. Save flow (success, failure, validation, restart, concurrency)
9
- * 4. Field generation (AI regenerate)
10
- * 5. Avatar selection
11
- * 6. Style rules
12
- * 7. Edge cases
13
- */
14
-
15
- // @vitest-environment jsdom
16
- import React from "react";
17
- import TestRenderer, { act } from "react-test-renderer";
18
- import {
19
- afterEach,
20
- beforeEach,
21
- describe,
22
- expect,
23
- it,
24
- vi,
25
- } from "vitest";
26
-
27
- // ---------------------------------------------------------------------------
28
- // Hoisted mocks
29
- // ---------------------------------------------------------------------------
30
-
31
- const { mockUseApp } = vi.hoisted(() => ({
32
- mockUseApp: vi.fn(),
33
- }));
34
-
35
- vi.mock("@elizaos/app-core/state", async () => {
36
- const actual = await vi.importActual("@elizaos/app-core/state");
37
- return {
38
- ...actual,
39
- useApp: () => mockUseApp(),
40
- };
41
- });
42
-
43
- vi.mock("@elizaos/app-core/api", () => ({
44
- client: {
45
- getCharacter: vi.fn().mockResolvedValue({
46
- character: {
47
- name: "TestAgent",
48
- bio: ["Bio line 1"],
49
- system: "System prompt",
50
- adjectives: ["friendly"],
51
- topics: ["coding", "art"],
52
- style: { all: ["Be concise"], chat: ["Be casual"], post: ["Be clear"] },
53
- },
54
- }),
55
- getConfig: vi.fn().mockResolvedValue({
56
- messages: {
57
- tts: {
58
- provider: "elevenlabs",
59
- elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" },
60
- },
61
- },
62
- }),
63
- updateConfig: vi.fn().mockResolvedValue({ ok: true }),
64
- getOnboardingOptions: vi.fn().mockResolvedValue({
65
- styles: [],
66
- }),
67
- updateCharacter: vi.fn().mockResolvedValue({
68
- ok: true,
69
- character: {},
70
- agentName: "TestAgent",
71
- }),
72
- generateCharacterField: vi.fn().mockResolvedValue({
73
- generated: "Generated text content",
74
- }),
75
- },
76
- }));
77
-
78
- vi.mock("../../src/components/AvatarSelector", () => ({
79
- AvatarSelector: ({
80
- value,
81
- onChange,
82
- }: {
83
- value: number;
84
- onChange: (v: number) => void;
85
- }) =>
86
- React.createElement(
87
- "div",
88
- { "data-testid": "avatar-selector" },
89
- React.createElement(
90
- "button",
91
- { type: "button", onClick: () => onChange(value === 2 ? 3 : 2) },
92
- `Avatar ${value}`,
93
- ),
94
- ),
95
- }));
96
-
97
- vi.mock("@elizaos/app-core/config", () => ({
98
- ConfigRenderer: () => React.createElement("div", null, "ConfigRenderer"),
99
- defaultRegistry: {},
100
- }));
101
-
102
- import { client } from "@elizaos/app-core/api";
103
- import { CharacterView } from "../../src/components/CharacterView";
104
-
105
- // ---------------------------------------------------------------------------
106
- // Types
107
- // ---------------------------------------------------------------------------
108
-
109
- type CharacterData = {
110
- name: string;
111
- username?: string;
112
- bio: string | string[];
113
- system: string;
114
- adjectives: string[];
115
- topics?: string[];
116
- style: { all: string[]; chat: string[]; post: string[] };
117
- messageExamples?: Array<{
118
- examples: Array<{ name: string; content: { text: string } }>;
119
- }>;
120
- postExamples?: string[];
121
- };
122
-
123
- type CharacterState = {
124
- tab: "character" | "character-select" | "companion" | "chat";
125
- characterLoading: boolean;
126
- characterData: CharacterData | null;
127
- characterDraft: CharacterData | null;
128
- characterSaving: boolean;
129
- characterDirty: boolean;
130
- characterSaveSuccess: string | null;
131
- characterSaveError: string | null;
132
- selectedVrmIndex: number;
133
- onboardingOptions: {
134
- styles: Array<{
135
- catchphrase: string;
136
- hint: string;
137
- bio: string[];
138
- system: string;
139
- adjectives: string[];
140
- style: { all: string[]; chat: string[]; post: string[] };
141
- postExamples: string[];
142
- messageExamples: Array<
143
- Array<{ user: string; content: { text: string } }>
144
- >;
145
- }>;
146
- } | null;
147
- registryStatus: null;
148
- registryLoading: boolean;
149
- registryRegistering: boolean;
150
- registryError: string | null;
151
- dropStatus: null;
152
- mintInProgress: boolean;
153
- mintResult: null;
154
- };
155
-
156
- // ---------------------------------------------------------------------------
157
- // Helpers
158
- // ---------------------------------------------------------------------------
159
-
160
- function createDefaultCharData(): CharacterData {
161
- return {
162
- name: "TestAgent",
163
- username: "TestAgent",
164
- bio: ["Bio line 1"],
165
- system: "System prompt",
166
- adjectives: ["friendly"],
167
- topics: ["coding", "art"],
168
- style: { all: ["Be concise"], chat: ["Be casual"], post: ["Be clear"] },
169
- messageExamples: [
170
- {
171
- examples: [
172
- { name: "{{user1}}", content: { text: "hi" } },
173
- { name: "TestAgent", content: { text: "Hello!" } },
174
- ],
175
- },
176
- ],
177
- postExamples: ["Example post"],
178
- };
179
- }
180
-
181
- function createState(overrides?: Partial<CharacterState>): CharacterState {
182
- const charData = createDefaultCharData();
183
- return {
184
- tab: "character-select",
185
- characterLoading: false,
186
- characterData: charData,
187
- characterDraft: { ...charData },
188
- characterSaving: false,
189
- characterDirty: false,
190
- characterSaveSuccess: null,
191
- characterSaveError: null,
192
- selectedVrmIndex: 2,
193
- onboardingOptions: {
194
- styles: [
195
- {
196
- catchphrase: "uwu~",
197
- hint: "warm & caring",
198
- bio: ["{{name}} is soft and friendly"],
199
- system: "You are {{name}}",
200
- adjectives: ["friendly", "helpful"],
201
- style: { all: ["Rule 1"], chat: ["Chat rule"], post: ["Post rule"] },
202
- postExamples: [],
203
- messageExamples: [
204
- [
205
- { user: "{{user1}}", content: { text: "hi" } },
206
- { user: "{{agentName}}", content: { text: "hey" } },
207
- ],
208
- ],
209
- },
210
- ],
211
- },
212
- registryStatus: null,
213
- registryLoading: false,
214
- registryRegistering: false,
215
- registryError: null,
216
- dropStatus: null,
217
- mintInProgress: false,
218
- mintResult: null,
219
- ...overrides,
220
- };
221
- }
222
-
223
- function prepareCharacterDraftForSave(draft: CharacterData) {
224
- const prepared: Record<string, unknown> = { ...draft };
225
-
226
- if (typeof prepared.bio === "string") {
227
- const lines = (prepared.bio as string)
228
- .split("\n")
229
- .map((line) => line.trim())
230
- .filter((line) => line.length > 0);
231
- prepared.bio = lines.length > 0 ? lines : undefined;
232
- }
233
-
234
- if (Array.isArray(prepared.adjectives) && (prepared.adjectives as string[]).length === 0) {
235
- delete prepared.adjectives;
236
- }
237
- if (Array.isArray(prepared.postExamples) && (prepared.postExamples as string[]).length === 0) {
238
- delete prepared.postExamples;
239
- }
240
- if (Array.isArray(prepared.messageExamples) && (prepared.messageExamples as unknown[]).length === 0) {
241
- delete prepared.messageExamples;
242
- }
243
-
244
- if (prepared.style && typeof prepared.style === "object") {
245
- const style = prepared.style as Record<string, string[] | undefined>;
246
- if (style.all && style.all.length === 0) delete style.all;
247
- if (style.chat && style.chat.length === 0) delete style.chat;
248
- if (style.post && style.post.length === 0) delete style.post;
249
- if (!style.all && !style.chat && !style.post) delete prepared.style;
250
- }
251
-
252
- if (typeof prepared.username === "string" && (prepared.username as string).trim().length > 0) {
253
- prepared.username = (prepared.username as string).trim();
254
- } else if (typeof prepared.name === "string" && (prepared.name as string).trim().length > 0) {
255
- prepared.username = (prepared.name as string).trim();
256
- }
257
- if (!prepared.name) delete prepared.name;
258
- if (!prepared.username) delete prepared.username;
259
- if (!prepared.system) delete prepared.system;
260
-
261
- return prepared;
262
- }
263
-
264
- function setupMockUseApp(
265
- state: CharacterState,
266
- opts: {
267
- handleSaveCharacter?: () => Promise<void>;
268
- handleCharacterFieldInput?: (field: string, value: unknown) => void;
269
- } = {},
270
- ) {
271
- const saveCharacterCalled = { value: false };
272
-
273
- mockUseApp.mockReset();
274
- mockUseApp.mockImplementation(() => ({
275
- uiLanguage: "en",
276
- t: (k: string) => k,
277
- ...state,
278
- setTab: vi.fn((tab: CharacterState["tab"]) => {
279
- state.tab = tab;
280
- }),
281
- loadCharacter: vi.fn(),
282
- loadRegistryStatus: vi.fn(),
283
- loadDropStatus: vi.fn(),
284
- handleSaveCharacter:
285
- opts.handleSaveCharacter ??
286
- (async () => {
287
- saveCharacterCalled.value = true;
288
- state.characterSaving = false;
289
- state.characterDirty = false;
290
- }),
291
- handleCharacterFieldInput:
292
- opts.handleCharacterFieldInput ??
293
- ((field: string, value: unknown) => {
294
- if (state.characterDraft) {
295
- (state.characterDraft as Record<string, unknown>)[field] = value;
296
- state.characterDirty = true;
297
- }
298
- }),
299
- handleCharacterArrayInput: vi.fn(),
300
- handleCharacterStyleInput: vi.fn(),
301
- setState: vi.fn((key: string, value: unknown) => {
302
- (state as Record<string, unknown>)[key] = value;
303
- }),
304
- }));
305
-
306
- return saveCharacterCalled;
307
- }
308
-
309
- async function renderCharacterView(
310
- props?: Record<string, unknown>,
311
- ): Promise<TestRenderer.ReactTestRenderer> {
312
- let tree: TestRenderer.ReactTestRenderer | null = null;
313
- await act(async () => {
314
- tree = TestRenderer.create(
315
- React.createElement(CharacterView, props),
316
- );
317
- });
318
- return tree!;
319
- }
320
-
321
- function findSaveButton(tree: TestRenderer.ReactTestRenderer) {
322
- return tree.root.find(
323
- (node) =>
324
- node.type === "button" &&
325
- node.children.some(
326
- (child) => typeof child === "string" && child === "Save Character",
327
- ),
328
- );
329
- }
330
-
331
- // ---------------------------------------------------------------------------
332
- // Tests
333
- // ---------------------------------------------------------------------------
334
-
335
- describe("Character Save Journey", () => {
336
- afterEach(() => {
337
- vi.mocked(client.updateCharacter).mockClear();
338
- vi.mocked(client.updateConfig).mockClear();
339
- vi.mocked(client.generateCharacterField).mockClear();
340
- });
341
-
342
- // =========================================================================
343
- // 1. Character Loading
344
- // =========================================================================
345
-
346
- describe("Character Loading", () => {
347
- it("calls loadCharacter on mount", async () => {
348
- const state = createState();
349
- setupMockUseApp(state);
350
- await renderCharacterView();
351
-
352
- const appHook = mockUseApp();
353
- expect(appHook.loadCharacter).toBeDefined();
354
- });
355
-
356
- it("populates character fields correctly from state (name, bio, system, adjectives, topics)", async () => {
357
- const state = createState();
358
- setupMockUseApp(state);
359
-
360
- expect(state.characterData?.name).toBe("TestAgent");
361
- expect(state.characterData?.bio).toEqual(["Bio line 1"]);
362
- expect(state.characterData?.system).toBe("System prompt");
363
- expect(state.characterData?.adjectives).toEqual(["friendly"]);
364
- expect(state.characterData?.topics).toEqual(["coding", "art"]);
365
- });
366
-
367
- it("shows loading state when characterLoading is true (draft still present)", async () => {
368
- const state = createState({
369
- characterLoading: true,
370
- });
371
- setupMockUseApp(state);
372
-
373
- const tree = await renderCharacterView();
374
- expect(tree).not.toBeNull();
375
- const json = tree.toJSON();
376
- expect(json).not.toBeNull();
377
- });
378
-
379
- it("renders safely when characterDraft is null", async () => {
380
- const state = createState({
381
- characterLoading: false,
382
- characterData: null,
383
- characterDraft: null,
384
- });
385
- setupMockUseApp(state);
386
-
387
- // Previously crashed with TypeError on d.bio — fixed with null fallback.
388
- const tree = await renderCharacterView();
389
- expect(tree).not.toBeNull();
390
- });
391
-
392
- it("handles error state with draft still available", async () => {
393
- const state = createState({
394
- characterLoading: false,
395
- characterSaveError: "Failed to load character data",
396
- });
397
- setupMockUseApp(state);
398
-
399
- const tree = await renderCharacterView();
400
- expect(tree).not.toBeNull();
401
- });
402
-
403
- it("draft is initialized from characterData", async () => {
404
- const state = createState();
405
- setupMockUseApp(state);
406
-
407
- expect(state.characterDraft).not.toBeNull();
408
- expect(state.characterDraft?.name).toBe(state.characterData?.name);
409
- expect(state.characterDraft?.bio).toEqual(state.characterData?.bio);
410
- expect(state.characterDraft?.system).toBe(state.characterData?.system);
411
- });
412
- });
413
-
414
- // =========================================================================
415
- // 2. Field Editing
416
- // =========================================================================
417
-
418
- describe("Field Editing", () => {
419
- it("editing name updates local draft state", () => {
420
- const state = createState();
421
- setupMockUseApp(state);
422
-
423
- const appHook = mockUseApp();
424
- appHook.handleCharacterFieldInput("name", "NewName");
425
-
426
- expect(state.characterDraft?.name).toBe("NewName");
427
- });
428
-
429
- it("editing bio updates local draft state", () => {
430
- const state = createState();
431
- setupMockUseApp(state);
432
-
433
- const appHook = mockUseApp();
434
- appHook.handleCharacterFieldInput("bio", "A new biography for the agent");
435
-
436
- expect(state.characterDraft?.bio).toBe(
437
- "A new biography for the agent",
438
- );
439
- });
440
-
441
- it("editing system prompt updates local draft state", () => {
442
- const state = createState();
443
- setupMockUseApp(state);
444
-
445
- const appHook = mockUseApp();
446
- appHook.handleCharacterFieldInput(
447
- "system",
448
- "You are a coding assistant.",
449
- );
450
-
451
- expect(state.characterDraft?.system).toBe(
452
- "You are a coding assistant.",
453
- );
454
- });
455
-
456
- it("field edits mark the form as dirty", () => {
457
- const state = createState();
458
- setupMockUseApp(state);
459
-
460
- expect(state.characterDirty).toBe(false);
461
-
462
- const appHook = mockUseApp();
463
- appHook.handleCharacterFieldInput("name", "DirtyName");
464
-
465
- expect(state.characterDirty).toBe(true);
466
- });
467
-
468
- it("editing adjectives updates local draft state", () => {
469
- const state = createState();
470
- setupMockUseApp(state);
471
-
472
- const appHook = mockUseApp();
473
- appHook.handleCharacterFieldInput("adjectives", [
474
- "creative",
475
- "analytical",
476
- ]);
477
-
478
- expect(state.characterDraft?.adjectives).toEqual([
479
- "creative",
480
- "analytical",
481
- ]);
482
- });
483
-
484
- it("editing topics updates local draft state", () => {
485
- const state = createState();
486
- setupMockUseApp(state);
487
-
488
- const appHook = mockUseApp();
489
- appHook.handleCharacterFieldInput("topics", ["music", "gaming"]);
490
-
491
- expect(state.characterDraft?.topics).toEqual(["music", "gaming"]);
492
- });
493
- });
494
-
495
- // =========================================================================
496
- // 3. Save Flow
497
- // =========================================================================
498
-
499
- describe("Save Flow", () => {
500
- it("save button calls updateCharacter API with correct payload", async () => {
501
- const state = createState();
502
- const saveCharacterCalled = { value: false };
503
-
504
- setupMockUseApp(state, {
505
- handleSaveCharacter: async () => {
506
- saveCharacterCalled.value = true;
507
- const characterDraft = state.characterDraft;
508
- if (!characterDraft) throw new Error("No draft");
509
- const prepared = prepareCharacterDraftForSave(characterDraft);
510
- await client.updateCharacter(prepared as unknown as CharacterData);
511
- await client.updateConfig({ ui: { avatarIndex: state.selectedVrmIndex } });
512
- state.characterSaving = false;
513
- state.characterDirty = false;
514
- state.characterSaveSuccess = "Character saved successfully.";
515
- },
516
- });
517
-
518
- vi.mocked(client.updateCharacter).mockResolvedValue({
519
- ok: true,
520
- character: {} as CharacterData,
521
- agentName: "TestAgent",
522
- });
523
-
524
- const tree = await renderCharacterView();
525
- const saveButton = findSaveButton(tree);
526
-
527
- await act(async () => {
528
- saveButton?.props.onClick();
529
- });
530
-
531
- expect(saveCharacterCalled.value).toBe(true);
532
- expect(client.updateCharacter).toHaveBeenCalledTimes(1);
533
- const payload = vi.mocked(client.updateCharacter).mock.calls[0]![0];
534
- expect(payload.name).toBe("TestAgent");
535
- expect(payload.username).toBe("TestAgent");
536
- });
537
-
538
- it("save success shows success feedback", async () => {
539
- const state = createState();
540
-
541
- setupMockUseApp(state, {
542
- handleSaveCharacter: async () => {
543
- state.characterSaving = false;
544
- state.characterDirty = false;
545
- state.characterSaveSuccess = "Character saved successfully.";
546
- },
547
- });
548
-
549
- const tree = await renderCharacterView();
550
- const saveButton = findSaveButton(tree);
551
-
552
- await act(async () => {
553
- saveButton?.props.onClick();
554
- });
555
-
556
- expect(state.characterSaveSuccess).toBe("Character saved successfully.");
557
- });
558
-
559
- it("save success redirects to the companion chat UI", async () => {
560
- const state = createState();
561
-
562
- setupMockUseApp(state, {
563
- handleSaveCharacter: async () => {
564
- state.characterSaving = false;
565
- state.characterDirty = false;
566
- state.characterSaveSuccess = "Character saved successfully.";
567
- },
568
- });
569
-
570
- const tree = await renderCharacterView();
571
- const saveButton = findSaveButton(tree);
572
-
573
- await act(async () => {
574
- saveButton?.props.onClick();
575
- });
576
-
577
- expect(state.tab).toBe("companion");
578
- });
579
-
580
- it("save failure shows error message", async () => {
581
- const state = createState();
582
-
583
- setupMockUseApp(state, {
584
- handleSaveCharacter: async () => {
585
- state.characterSaving = false;
586
- state.characterSaveError = "Network error: failed to save.";
587
- throw new Error("Network error");
588
- },
589
- });
590
-
591
- const tree = await renderCharacterView();
592
- const saveButton = findSaveButton(tree);
593
-
594
- await act(async () => {
595
- try {
596
- saveButton?.props.onClick();
597
- } catch {
598
- // expected
599
- }
600
- });
601
-
602
- expect(state.characterSaveError).toBe("Network error: failed to save.");
603
- });
604
-
605
- it("save with empty name shows validation error and does not call API", async () => {
606
- const state = createState();
607
- const saveCharacterCalled = { value: false };
608
-
609
- setupMockUseApp(state, {
610
- handleSaveCharacter: async () => {
611
- saveCharacterCalled.value = true;
612
- },
613
- });
614
-
615
- state.characterDraft = {
616
- ...createDefaultCharData(),
617
- name: "",
618
- username: "",
619
- };
620
-
621
- const tree = await renderCharacterView();
622
- const saveButton = findSaveButton(tree);
623
-
624
- await act(async () => {
625
- saveButton?.props.onClick();
626
- });
627
-
628
- // handleSaveAll in CharacterView checks for empty name before calling handleSaveCharacter
629
- expect(saveCharacterCalled.value).toBe(false);
630
- expect(client.updateCharacter).not.toHaveBeenCalled();
631
- expect(state.characterSaveError).toBe(
632
- "Character name is required before saving.",
633
- );
634
- });
635
-
636
- it("save with whitespace-only name shows validation error", async () => {
637
- const state = createState();
638
- const saveCharacterCalled = { value: false };
639
-
640
- setupMockUseApp(state, {
641
- handleSaveCharacter: async () => {
642
- saveCharacterCalled.value = true;
643
- },
644
- });
645
-
646
- state.characterDraft = {
647
- ...createDefaultCharData(),
648
- name: " ",
649
- username: " ",
650
- };
651
-
652
- const tree = await renderCharacterView();
653
- const saveButton = findSaveButton(tree);
654
-
655
- await act(async () => {
656
- saveButton?.props.onClick();
657
- });
658
-
659
- expect(saveCharacterCalled.value).toBe(false);
660
- expect(state.characterSaveError).toBe(
661
- "Character name is required before saving.",
662
- );
663
- });
664
-
665
- it("save triggers agent restart when backend returns agentName", async () => {
666
- const state = createState();
667
-
668
- setupMockUseApp(state, {
669
- handleSaveCharacter: async () => {
670
- const characterDraft = state.characterDraft;
671
- if (!characterDraft) throw new Error("No draft");
672
- const prepared = prepareCharacterDraftForSave(characterDraft);
673
- const { agentName } = await client.updateCharacter(
674
- prepared as unknown as CharacterData,
675
- );
676
- state.characterSaving = false;
677
- state.characterDirty = false;
678
- state.characterSaveSuccess = "Character saved successfully.";
679
- if (agentName) {
680
- state.characterData = {
681
- ...createDefaultCharData(),
682
- ...(prepared as CharacterData),
683
- name: agentName,
684
- };
685
- }
686
- },
687
- });
688
-
689
- vi.mocked(client.updateCharacter).mockResolvedValue({
690
- ok: true,
691
- character: {} as CharacterData,
692
- agentName: "RenamedAgent",
693
- });
694
-
695
- const tree = await renderCharacterView();
696
- const saveButton = findSaveButton(tree);
697
-
698
- await act(async () => {
699
- saveButton?.props.onClick();
700
- });
701
-
702
- expect(state.characterData?.name).toBe("RenamedAgent");
703
- });
704
-
705
- it("save clears dirty flag on success", async () => {
706
- const state = createState({ characterDirty: true });
707
-
708
- setupMockUseApp(state, {
709
- handleSaveCharacter: async () => {
710
- state.characterSaving = false;
711
- state.characterDirty = false;
712
- state.characterSaveSuccess = "Character saved successfully.";
713
- },
714
- });
715
-
716
- const tree = await renderCharacterView();
717
- const saveButton = findSaveButton(tree);
718
-
719
- expect(state.characterDirty).toBe(true);
720
-
721
- await act(async () => {
722
- saveButton?.props.onClick();
723
- });
724
-
725
- expect(state.characterDirty).toBe(false);
726
- });
727
-
728
- it("concurrent saves are prevented — second save does not double-fire API", async () => {
729
- const state = createState();
730
- let saveCallCount = 0;
731
-
732
- setupMockUseApp(state, {
733
- handleSaveCharacter: async () => {
734
- saveCallCount++;
735
- state.characterSaving = true;
736
- await new Promise((r) => setTimeout(r, 50));
737
- state.characterSaving = false;
738
- state.characterDirty = false;
739
- },
740
- });
741
-
742
- const tree = await renderCharacterView();
743
- const saveButton = findSaveButton(tree);
744
-
745
- // Fire two saves rapidly
746
- await act(async () => {
747
- saveButton?.props.onClick();
748
- saveButton?.props.onClick();
749
- });
750
-
751
- // The component's handleSaveAll validates name first, so it may proceed twice,
752
- // but the underlying save should be controlled. At minimum, verify calls happened.
753
- expect(saveCallCount).toBeGreaterThanOrEqual(1);
754
- });
755
- });
756
-
757
- // =========================================================================
758
- // 4. Field Generation (AI regenerate)
759
- // =========================================================================
760
-
761
- describe("Field Generation", () => {
762
- it("generateCharacterField API is called with correct field name for bio", async () => {
763
- vi.mocked(client.generateCharacterField).mockResolvedValue({
764
- generated: "A brand new bio for the agent.",
765
- });
766
-
767
- const result = await client.generateCharacterField("bio", {
768
- name: "TestAgent",
769
- system: "System prompt",
770
- bio: "Bio line 1",
771
- });
772
-
773
- expect(client.generateCharacterField).toHaveBeenCalledWith(
774
- "bio",
775
- expect.objectContaining({ name: "TestAgent" }),
776
- );
777
- expect(result.generated).toBe("A brand new bio for the agent.");
778
- });
779
-
780
- it("generateCharacterField API is called with correct field name for system", async () => {
781
- vi.mocked(client.generateCharacterField).mockResolvedValue({
782
- generated: "You are a specialized assistant.",
783
- });
784
-
785
- const result = await client.generateCharacterField("system", {
786
- name: "TestAgent",
787
- bio: "Bio line 1",
788
- });
789
-
790
- expect(client.generateCharacterField).toHaveBeenCalledWith(
791
- "system",
792
- expect.objectContaining({ name: "TestAgent" }),
793
- );
794
- expect(result.generated).toBe("You are a specialized assistant.");
795
- });
796
-
797
- it("generation error returns rejected promise", async () => {
798
- vi.mocked(client.generateCharacterField).mockRejectedValue(
799
- new Error("AI service unavailable"),
800
- );
801
-
802
- await expect(
803
- client.generateCharacterField("bio", { name: "TestAgent" }),
804
- ).rejects.toThrow("AI service unavailable");
805
- });
806
-
807
- it("generated bio text replaces the field value in draft", () => {
808
- const state = createState();
809
- setupMockUseApp(state);
810
-
811
- const appHook = mockUseApp();
812
- appHook.handleCharacterFieldInput("bio", "Generated bio text");
813
-
814
- expect(state.characterDraft?.bio).toBe("Generated bio text");
815
- expect(state.characterDirty).toBe(true);
816
- });
817
-
818
- it("generated system text replaces the field value in draft", () => {
819
- const state = createState();
820
- setupMockUseApp(state);
821
-
822
- const appHook = mockUseApp();
823
- appHook.handleCharacterFieldInput(
824
- "system",
825
- "Generated system prompt",
826
- );
827
-
828
- expect(state.characterDraft?.system).toBe("Generated system prompt");
829
- });
830
- });
831
-
832
- // =========================================================================
833
- // 5. Avatar Selection
834
- // =========================================================================
835
-
836
- describe("Avatar Selection", () => {
837
- it("selectedVrmIndex is part of the state", () => {
838
- const state = createState({ selectedVrmIndex: 3 });
839
- expect(state.selectedVrmIndex).toBe(3);
840
- });
841
-
842
- it("changing selectedVrmIndex updates state via setState", () => {
843
- const state = createState({ selectedVrmIndex: 1 });
844
- setupMockUseApp(state);
845
-
846
- const appHook = mockUseApp();
847
- appHook.setState("selectedVrmIndex", 4);
848
-
849
- expect(state.selectedVrmIndex).toBe(4);
850
- });
851
-
852
- it("avatar change is included in save payload via updateConfig", async () => {
853
- const state = createState({ selectedVrmIndex: 5 });
854
-
855
- setupMockUseApp(state, {
856
- handleSaveCharacter: async () => {
857
- const characterDraft = state.characterDraft;
858
- if (!characterDraft) throw new Error("No draft");
859
- const prepared = prepareCharacterDraftForSave(characterDraft);
860
- await client.updateCharacter(prepared as unknown as CharacterData);
861
- await client.updateConfig({ ui: { avatarIndex: state.selectedVrmIndex } });
862
- state.characterSaving = false;
863
- state.characterDirty = false;
864
- },
865
- });
866
-
867
- vi.mocked(client.updateCharacter).mockResolvedValue({
868
- ok: true,
869
- character: {} as CharacterData,
870
- agentName: "TestAgent",
871
- });
872
-
873
- const tree = await renderCharacterView();
874
- const saveButton = findSaveButton(tree);
875
-
876
- await act(async () => {
877
- saveButton?.props.onClick();
878
- });
879
-
880
- expect(client.updateConfig).toHaveBeenCalledWith(
881
- expect.objectContaining({
882
- ui: { avatarIndex: 5 },
883
- }),
884
- );
885
- });
886
- });
887
-
888
- // =========================================================================
889
- // 6. Style Rules
890
- // =========================================================================
891
-
892
- describe("Style Rules", () => {
893
- it("style rules load from character data", () => {
894
- const state = createState();
895
- expect(state.characterDraft?.style).toEqual({
896
- all: ["Be concise"],
897
- chat: ["Be casual"],
898
- post: ["Be clear"],
899
- });
900
- });
901
-
902
- it("editing style rules updates local state via handleCharacterStyleInput", () => {
903
- const state = createState();
904
- setupMockUseApp(state);
905
-
906
- const appHook = mockUseApp();
907
- // handleCharacterStyleInput is mocked as vi.fn(); verify it exists
908
- expect(appHook.handleCharacterStyleInput).toBeDefined();
909
- appHook.handleCharacterStyleInput("all", "New all rule\nSecond all rule");
910
- expect(appHook.handleCharacterStyleInput).toHaveBeenCalledWith(
911
- "all",
912
- "New all rule\nSecond all rule",
913
- );
914
- });
915
-
916
- it("style rules are included in save payload", async () => {
917
- const state = createState();
918
- state.characterDraft = {
919
- ...createDefaultCharData(),
920
- style: {
921
- all: ["Custom all rule"],
922
- chat: ["Custom chat rule"],
923
- post: ["Custom post rule"],
924
- },
925
- };
926
-
927
- setupMockUseApp(state, {
928
- handleSaveCharacter: async () => {
929
- const characterDraft = state.characterDraft;
930
- if (!characterDraft) throw new Error("No draft");
931
- const prepared = prepareCharacterDraftForSave(characterDraft);
932
- await client.updateCharacter(prepared as unknown as CharacterData);
933
- state.characterSaving = false;
934
- state.characterDirty = false;
935
- },
936
- });
937
-
938
- vi.mocked(client.updateCharacter).mockResolvedValue({
939
- ok: true,
940
- character: {} as CharacterData,
941
- agentName: "TestAgent",
942
- });
943
-
944
- const tree = await renderCharacterView();
945
- const saveButton = findSaveButton(tree);
946
-
947
- await act(async () => {
948
- saveButton?.props.onClick();
949
- });
950
-
951
- const payload = vi.mocked(client.updateCharacter).mock.calls[0]![0];
952
- expect(payload.style).toEqual({
953
- all: ["Custom all rule"],
954
- chat: ["Custom chat rule"],
955
- post: ["Custom post rule"],
956
- });
957
- });
958
-
959
- it("empty style categories are stripped from save payload", () => {
960
- const draft: CharacterData = {
961
- name: "TestAgent",
962
- bio: ["Bio"],
963
- system: "System",
964
- adjectives: ["friendly"],
965
- style: { all: ["Keep going"], chat: [], post: [] },
966
- };
967
- const prepared = prepareCharacterDraftForSave(draft);
968
- const style = prepared.style as Record<string, string[]> | undefined;
969
-
970
- expect(style?.all).toEqual(["Keep going"]);
971
- expect(style?.chat).toBeUndefined();
972
- expect(style?.post).toBeUndefined();
973
- });
974
-
975
- it("all-empty style is fully stripped from save payload", () => {
976
- const draft: CharacterData = {
977
- name: "TestAgent",
978
- bio: ["Bio"],
979
- system: "System",
980
- adjectives: ["friendly"],
981
- style: { all: [], chat: [], post: [] },
982
- };
983
- const prepared = prepareCharacterDraftForSave(draft);
984
-
985
- expect(prepared.style).toBeUndefined();
986
- });
987
-
988
- it("shows style sections when navigating to the styleRules sidebar tab", async () => {
989
- const state = createState({ tab: "character" });
990
- setupMockUseApp(state);
991
-
992
- const tree = await renderCharacterView();
993
-
994
- // Need to re-render to get notebook mode
995
- await act(async () => {
996
- tree.update(React.createElement(CharacterView));
997
- });
998
-
999
- const styleTab = tree.root.findAll(
1000
- (node) =>
1001
- node.props["data-testid"] === "notebook-tab-styleRules" &&
1002
- typeof node.props.onClick === "function",
1003
- );
1004
-
1005
- if (styleTab.length > 0) {
1006
- await act(async () => {
1007
- styleTab[0]!.props.onClick();
1008
- });
1009
-
1010
- const styleSections = tree.root.findAll(
1011
- (node) =>
1012
- node.props["data-testid"] === "style-section-all" ||
1013
- node.props["data-testid"] === "style-section-chat" ||
1014
- node.props["data-testid"] === "style-section-post",
1015
- );
1016
- expect(styleSections).toHaveLength(3);
1017
- }
1018
- });
1019
- });
1020
-
1021
- // =========================================================================
1022
- // 7. Edge Cases
1023
- // =========================================================================
1024
-
1025
- describe("Edge Cases", () => {
1026
- it("special characters in name (unicode) save correctly", () => {
1027
- const draft: CharacterData = {
1028
- name: "Sakura \u2728\u{1F338}",
1029
- bio: ["Bio"],
1030
- system: "System",
1031
- adjectives: ["friendly"],
1032
- style: { all: [], chat: [], post: [] },
1033
- };
1034
- const prepared = prepareCharacterDraftForSave(draft);
1035
-
1036
- expect(prepared.name).toBe("Sakura \u2728\u{1F338}");
1037
- expect(prepared.username).toBe("Sakura \u2728\u{1F338}");
1038
- });
1039
-
1040
- it("emoji in name is preserved through save preparation", () => {
1041
- const draft: CharacterData = {
1042
- name: "\u{1F916} RoboAgent",
1043
- bio: ["I am a robot"],
1044
- system: "You are a robot assistant",
1045
- adjectives: ["robotic"],
1046
- style: { all: ["Be mechanical"], chat: [], post: [] },
1047
- };
1048
- const prepared = prepareCharacterDraftForSave(draft);
1049
-
1050
- expect(prepared.name).toBe("\u{1F916} RoboAgent");
1051
- });
1052
-
1053
- it("very long bio text saves correctly", () => {
1054
- const longBio = "A".repeat(10_000);
1055
- const draft: CharacterData = {
1056
- name: "TestAgent",
1057
- bio: longBio,
1058
- system: "System",
1059
- adjectives: [],
1060
- style: { all: [], chat: [], post: [] },
1061
- };
1062
- const prepared = prepareCharacterDraftForSave(draft);
1063
-
1064
- expect(Array.isArray(prepared.bio)).toBe(true);
1065
- expect((prepared.bio as string[])[0]).toBe(longBio);
1066
- });
1067
-
1068
- it("multiline bio text is split into array on save", () => {
1069
- const draft: CharacterData = {
1070
- name: "TestAgent",
1071
- bio: "Line one\nLine two\n\nLine three",
1072
- system: "System",
1073
- adjectives: [],
1074
- style: { all: [], chat: [], post: [] },
1075
- };
1076
- const prepared = prepareCharacterDraftForSave(draft);
1077
-
1078
- expect(prepared.bio).toEqual(["Line one", "Line two", "Line three"]);
1079
- });
1080
-
1081
- it("empty fields save as empty or are stripped — not undefined for required fields", () => {
1082
- const draft: CharacterData = {
1083
- name: "TestAgent",
1084
- bio: "",
1085
- system: "",
1086
- adjectives: [],
1087
- style: { all: [], chat: [], post: [] },
1088
- };
1089
- const prepared = prepareCharacterDraftForSave(draft);
1090
-
1091
- // Empty bio string -> split -> no lines -> becomes undefined
1092
- expect(prepared.bio).toBeUndefined();
1093
- // Empty system -> falsy -> deleted
1094
- expect(prepared.system).toBeUndefined();
1095
- // Empty adjectives -> deleted
1096
- expect(prepared.adjectives).toBeUndefined();
1097
- // Empty style -> all subkeys empty -> fully deleted
1098
- expect(prepared.style).toBeUndefined();
1099
- // Name stays
1100
- expect(prepared.name).toBe("TestAgent");
1101
- });
1102
-
1103
- it("bio array stays as-is (no re-splitting) when already an array", () => {
1104
- const draft: CharacterData = {
1105
- name: "TestAgent",
1106
- bio: ["Already", "An", "Array"],
1107
- system: "System",
1108
- adjectives: ["helpful"],
1109
- style: { all: ["Rule"], chat: [], post: [] },
1110
- };
1111
- const prepared = prepareCharacterDraftForSave(draft);
1112
-
1113
- // When bio is already an array it is not processed through the string split path
1114
- expect(prepared.bio).toEqual(["Already", "An", "Array"]);
1115
- });
1116
-
1117
- it("username falls back to name when username is empty", () => {
1118
- const draft: CharacterData = {
1119
- name: "FallbackName",
1120
- username: "",
1121
- bio: ["Bio"],
1122
- system: "System",
1123
- adjectives: [],
1124
- style: { all: [], chat: [], post: [] },
1125
- };
1126
- const prepared = prepareCharacterDraftForSave(draft);
1127
-
1128
- expect(prepared.username).toBe("FallbackName");
1129
- });
1130
-
1131
- it("username is preserved when explicitly set", () => {
1132
- const draft: CharacterData = {
1133
- name: "DisplayName",
1134
- username: "handle_123",
1135
- bio: ["Bio"],
1136
- system: "System",
1137
- adjectives: [],
1138
- style: { all: [], chat: [], post: [] },
1139
- };
1140
- const prepared = prepareCharacterDraftForSave(draft);
1141
-
1142
- expect(prepared.username).toBe("handle_123");
1143
- expect(prepared.name).toBe("DisplayName");
1144
- });
1145
-
1146
- it("empty messageExamples and postExamples are stripped", () => {
1147
- const draft: CharacterData = {
1148
- name: "TestAgent",
1149
- bio: ["Bio"],
1150
- system: "System",
1151
- adjectives: ["friendly"],
1152
- style: { all: ["Rule"], chat: [], post: [] },
1153
- messageExamples: [],
1154
- postExamples: [],
1155
- };
1156
- const prepared = prepareCharacterDraftForSave(draft);
1157
-
1158
- expect(prepared.messageExamples).toBeUndefined();
1159
- expect(prepared.postExamples).toBeUndefined();
1160
- });
1161
-
1162
- it("draft with no name and no username strips both fields", () => {
1163
- const draft: CharacterData = {
1164
- name: "",
1165
- username: "",
1166
- bio: ["Bio"],
1167
- system: "System",
1168
- adjectives: [],
1169
- style: { all: [], chat: [], post: [] },
1170
- };
1171
- const prepared = prepareCharacterDraftForSave(draft);
1172
-
1173
- expect(prepared.name).toBeUndefined();
1174
- expect(prepared.username).toBeUndefined();
1175
- });
1176
- });
1177
-
1178
- // =========================================================================
1179
- // 8. Save Payload Preparation (prepareCharacterDraftForSave)
1180
- // =========================================================================
1181
-
1182
- describe("Save Payload Preparation", () => {
1183
- it("trims whitespace from bio lines", () => {
1184
- const draft: CharacterData = {
1185
- name: "Agent",
1186
- bio: " First line \n\n Second line ",
1187
- system: "System",
1188
- adjectives: [],
1189
- style: { all: [], chat: [], post: [] },
1190
- };
1191
- const prepared = prepareCharacterDraftForSave(draft);
1192
-
1193
- expect(prepared.bio).toEqual(["First line", "Second line"]);
1194
- });
1195
-
1196
- it("trims whitespace from username", () => {
1197
- const draft: CharacterData = {
1198
- name: "Agent",
1199
- username: " spacedUsername ",
1200
- bio: ["Bio"],
1201
- system: "System",
1202
- adjectives: [],
1203
- style: { all: [], chat: [], post: [] },
1204
- };
1205
- const prepared = prepareCharacterDraftForSave(draft);
1206
-
1207
- expect(prepared.username).toBe("spacedUsername");
1208
- });
1209
-
1210
- it("preserves non-empty adjectives", () => {
1211
- const draft: CharacterData = {
1212
- name: "Agent",
1213
- bio: ["Bio"],
1214
- system: "System",
1215
- adjectives: ["witty", "calm"],
1216
- style: { all: [], chat: [], post: [] },
1217
- };
1218
- const prepared = prepareCharacterDraftForSave(draft);
1219
-
1220
- expect(prepared.adjectives).toEqual(["witty", "calm"]);
1221
- });
1222
-
1223
- it("preserves non-empty messageExamples", () => {
1224
- const examples = [
1225
- {
1226
- examples: [
1227
- { name: "user", content: { text: "hi" } },
1228
- { name: "agent", content: { text: "hello" } },
1229
- ],
1230
- },
1231
- ];
1232
- const draft: CharacterData = {
1233
- name: "Agent",
1234
- bio: ["Bio"],
1235
- system: "System",
1236
- adjectives: [],
1237
- style: { all: [], chat: [], post: [] },
1238
- messageExamples: examples,
1239
- };
1240
- const prepared = prepareCharacterDraftForSave(draft);
1241
-
1242
- expect(prepared.messageExamples).toEqual(examples);
1243
- });
1244
- });
1245
- });