@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,1633 +0,0 @@
1
- /**
2
- * Vector Browser — explore agent memories and embeddings.
3
- *
4
- * Reads from the memories table (or similar vector-storage tables) using
5
- * the generic database APIs. Shows paginated memory records with content,
6
- * metadata, and embedding previews. Click any card to see full details.
7
- * Toggle to a 2D scatter-plot graph view of embeddings.
8
- */
9
-
10
- import { Button, Input } from "@elizaos/ui";
11
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
12
- import { client, type QueryResult, type TableInfo } from "../api";
13
- import { useApp } from "../state";
14
- import { createVectorBrowserRenderer, THREE } from "./vector-browser-three";
15
-
16
- const PAGE_SIZE = 25;
17
- const MAX_THREE_PIXEL_RATIO = 2;
18
-
19
- type ViewMode = "list" | "graph" | "3d";
20
-
21
- /** The dimension columns in the elizaOS `embeddings` table. */
22
- const DIM_COLUMNS = [
23
- "dim_384",
24
- "dim_512",
25
- "dim_768",
26
- "dim_1024",
27
- "dim_1536",
28
- "dim_3072",
29
- ] as const;
30
-
31
- interface MemoryRecord {
32
- id: string;
33
- content: string;
34
- roomId: string;
35
- entityId: string;
36
- type: string;
37
- createdAt: string;
38
- unique: boolean;
39
- embedding: number[] | null;
40
- raw: Record<string, unknown>;
41
- }
42
-
43
- function hasEmbedding(
44
- memory: MemoryRecord,
45
- ): memory is MemoryRecord & { embedding: number[] } {
46
- return memory.embedding !== null;
47
- }
48
-
49
- interface VectorGraph2DBounds {
50
- minX: number;
51
- minY: number;
52
- rangeX: number;
53
- rangeY: number;
54
- }
55
-
56
- interface VectorGraph2DLayout {
57
- bounds: VectorGraph2DBounds;
58
- points: [number, number][];
59
- typeColors: Record<string, string>;
60
- withEmbeddings: Array<MemoryRecord & { embedding: number[] }>;
61
- }
62
-
63
- const VECTOR_GRAPH_2D_PALETTE = [
64
- "#6cf",
65
- "#f59e0b",
66
- "#10b981",
67
- "#ef4444",
68
- "#8b5cf6",
69
- "#ec4899",
70
- "#06b6d4",
71
- "#84cc16",
72
- ];
73
-
74
- /** Try to parse a JSON content field, returning the text content or the raw string. */
75
- function parseContent(val: unknown): string {
76
- if (typeof val !== "string") return String(val ?? "");
77
- if (val.startsWith("{")) {
78
- try {
79
- const parsed = JSON.parse(val);
80
- if (parsed.text) return String(parsed.text);
81
- return val;
82
- } catch {
83
- return val;
84
- }
85
- }
86
- return val;
87
- }
88
-
89
- /** Parse an embedding from various storage formats (pgvector text, JSON, typed arrays). */
90
- function parseEmbedding(val: unknown): number[] | null {
91
- if (!val) return null;
92
- if (Array.isArray(val)) return val as number[];
93
- // Handle typed arrays (Float32Array, Float64Array, Uint8Array etc.)
94
- if (ArrayBuffer.isView(val)) {
95
- return Array.from(val as Float64Array);
96
- }
97
- if (typeof val === "string" && val.length > 2) {
98
- const trimmed = val.trim();
99
- // pgvector text format: [0.1,0.2,0.3] — also valid JSON
100
- // Also handle without brackets: 0.1,0.2,0.3
101
- const inner =
102
- trimmed.startsWith("[") && trimmed.endsWith("]")
103
- ? trimmed.slice(1, -1)
104
- : trimmed;
105
- if (!inner) return null;
106
- // Fast path: split by comma and parse floats
107
- const parts = inner.split(",");
108
- if (parts.length < 2) return null;
109
- const nums: number[] = [];
110
- for (const p of parts) {
111
- const n = Number.parseFloat(p);
112
- if (Number.isNaN(n)) return null;
113
- nums.push(n);
114
- }
115
- return nums;
116
- }
117
- return null;
118
- }
119
-
120
- function rowToMemory(row: Record<string, unknown>): MemoryRecord {
121
- // Try explicit embedding/vector column first, then check elizaOS dim_* columns
122
- let embeddingVal = row.embedding ?? row.vector ?? row.embeddings;
123
- if (!embeddingVal) {
124
- for (const dim of DIM_COLUMNS) {
125
- if (row[dim]) {
126
- embeddingVal = row[dim];
127
- break;
128
- }
129
- }
130
- }
131
-
132
- return {
133
- id: String(row.id ?? row.ID ?? row.memory_id ?? ""),
134
- content: parseContent(row.content ?? row.body ?? row.text ?? ""),
135
- roomId: String(row.roomId ?? row.room_id ?? row.roomID ?? ""),
136
- entityId: String(
137
- row.entityId ??
138
- row.entity_id ??
139
- row.entityID ??
140
- row.userId ??
141
- row.user_id ??
142
- "",
143
- ),
144
- type: String(row.type ?? row.memoryType ?? row.memory_type ?? ""),
145
- createdAt: String(row.createdAt ?? row.created_at ?? row.timestamp ?? ""),
146
- unique: row.unique === true || row.unique === 1 || row.isUnique === true,
147
- embedding: parseEmbedding(embeddingVal),
148
- raw: row,
149
- };
150
- }
151
-
152
- function buildVectorGraph2DLayout(
153
- memories: MemoryRecord[],
154
- ): VectorGraph2DLayout | null {
155
- const withEmbeddings = memories.filter(hasEmbedding);
156
- if (withEmbeddings.length < 2) {
157
- return null;
158
- }
159
-
160
- const points = projectTo2D(withEmbeddings.map((memory) => memory.embedding));
161
- let minX = Infinity;
162
- let maxX = -Infinity;
163
- let minY = Infinity;
164
- let maxY = -Infinity;
165
- for (const [x, y] of points) {
166
- if (x < minX) minX = x;
167
- if (x > maxX) maxX = x;
168
- if (y < minY) minY = y;
169
- if (y > maxY) maxY = y;
170
- }
171
-
172
- const typeColors: Record<string, string> = {};
173
- const types = [...new Set(withEmbeddings.map((memory) => memory.type))];
174
- for (let index = 0; index < types.length; index += 1) {
175
- typeColors[types[index]] =
176
- VECTOR_GRAPH_2D_PALETTE[index % VECTOR_GRAPH_2D_PALETTE.length];
177
- }
178
-
179
- return {
180
- bounds: {
181
- minX,
182
- minY,
183
- rangeX: maxX - minX || 1,
184
- rangeY: maxY - minY || 1,
185
- },
186
- points,
187
- typeColors,
188
- withEmbeddings,
189
- };
190
- }
191
-
192
- function toVectorGraph2DScreenX(
193
- x: number,
194
- width: number,
195
- padding: number,
196
- bounds: VectorGraph2DBounds,
197
- ): number {
198
- return padding + ((x - bounds.minX) / bounds.rangeX) * (width - 2 * padding);
199
- }
200
-
201
- function toVectorGraph2DScreenY(
202
- y: number,
203
- height: number,
204
- padding: number,
205
- bounds: VectorGraph2DBounds,
206
- ): number {
207
- return padding + ((y - bounds.minY) / bounds.rangeY) * (height - 2 * padding);
208
- }
209
-
210
- // ── PCA projection utilities ───────────────────────────────────────────
211
-
212
- function dot(a: number[], b: Float64Array | number[]): number {
213
- let s = 0;
214
- for (let i = 0; i < a.length; i++) s += a[i] * (b[i] ?? 0);
215
- return s;
216
- }
217
-
218
- function powerIteration(
219
- data: number[][],
220
- dims: number,
221
- iters = 30,
222
- ): Float64Array {
223
- const v = new Float64Array(dims);
224
- // Random init
225
- for (let d = 0; d < dims; d++) v[d] = Math.random() - 0.5;
226
- normalize(v);
227
-
228
- for (let iter = 0; iter < iters; iter++) {
229
- const w = new Float64Array(dims);
230
- for (const row of data) {
231
- const d = dot(row, v);
232
- for (let j = 0; j < dims; j++) w[j] += d * row[j];
233
- }
234
- normalize(w);
235
- for (let d = 0; d < dims; d++) v[d] = w[d];
236
- }
237
- return v;
238
- }
239
-
240
- function normalize(v: Float64Array) {
241
- let len = 0;
242
- for (let i = 0; i < v.length; i++) len += v[i] * v[i];
243
- len = Math.sqrt(len) || 1;
244
- for (let i = 0; i < v.length; i++) v[i] /= len;
245
- }
246
-
247
- /** Compute mean and center data for PCA. */
248
- function centerData(vectors: number[][]): {
249
- centered: number[][];
250
- mean: Float64Array;
251
- } {
252
- const dims = vectors[0].length;
253
- const n = vectors.length;
254
- const mean = new Float64Array(dims);
255
- for (const v of vectors) {
256
- for (let d = 0; d < dims; d++) mean[d] += v[d];
257
- }
258
- for (let d = 0; d < dims; d++) mean[d] /= n;
259
- const centered = vectors.map((v) => v.map((x, d) => x - mean[d]));
260
- return { centered, mean };
261
- }
262
-
263
- /** Deflate data by removing projection onto a principal component. */
264
- function deflate(data: number[][], pc: Float64Array): number[][] {
265
- const proj = data.map((v) => dot(v, pc));
266
- return data.map((v, i) => v.map((x, d) => x - proj[i] * pc[d]));
267
- }
268
-
269
- /** Project high-dimensional vectors to 2D using the first two principal axes. */
270
- function projectTo2D(vectors: number[][]): [number, number][] {
271
- if (vectors.length === 0) return [];
272
- const dims = vectors[0].length;
273
- const { centered } = centerData(vectors);
274
-
275
- const pc1 = powerIteration(centered, dims);
276
- const deflated1 = deflate(centered, pc1);
277
- const pc2 = powerIteration(deflated1, dims);
278
-
279
- return centered.map((v) => [dot(v, pc1), dot(v, pc2)] as [number, number]);
280
- }
281
-
282
- /** Project high-dimensional vectors to 3D using the first three principal axes. */
283
- function projectTo3D(vectors: number[][]): [number, number, number][] {
284
- if (vectors.length === 0) return [];
285
- const dims = vectors[0].length;
286
- const { centered } = centerData(vectors);
287
-
288
- const pc1 = powerIteration(centered, dims);
289
- const deflated1 = deflate(centered, pc1);
290
- const pc2 = powerIteration(deflated1, dims);
291
- const deflated2 = deflate(deflated1, pc2);
292
- const pc3 = powerIteration(deflated2, dims);
293
-
294
- return centered.map(
295
- (v) => [dot(v, pc1), dot(v, pc2), dot(v, pc3)] as [number, number, number],
296
- );
297
- }
298
-
299
- // ── Graph sub-component ────────────────────────────────────────────────
300
-
301
- function VectorGraph({
302
- memories,
303
- onSelect,
304
- }: {
305
- memories: MemoryRecord[];
306
- onSelect: (mem: MemoryRecord) => void;
307
- }) {
308
- const { t } = useApp();
309
- const canvasRef = useRef<HTMLCanvasElement>(null);
310
- const containerRef = useRef<HTMLDivElement>(null);
311
- const [hoveredIdx, setHoveredIdx] = useState<number | null>(null);
312
- const graph = useMemo(() => buildVectorGraph2DLayout(memories), [memories]);
313
-
314
- useEffect(() => {
315
- const canvas = canvasRef.current;
316
- const container = containerRef.current;
317
- if (!canvas || !container || !graph) return;
318
-
319
- const rect = container.getBoundingClientRect();
320
- const W = rect.width;
321
- const H = 500;
322
- const dpr = window.devicePixelRatio || 1;
323
- canvas.width = W * dpr;
324
- canvas.height = H * dpr;
325
- canvas.style.width = `${W}px`;
326
- canvas.style.height = `${H}px`;
327
-
328
- const ctx = canvas.getContext("2d");
329
- if (!ctx) return;
330
- ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
331
-
332
- const pad = 40;
333
-
334
- // Background
335
- const style = getComputedStyle(document.documentElement);
336
- const bgColor = style.getPropertyValue("--bg").trim() || "#111";
337
- const borderColor = style.getPropertyValue("--border").trim() || "#333";
338
- const accentColor = style.getPropertyValue("--accent").trim() || "#6cf";
339
- const mutedColor = style.getPropertyValue("--muted").trim() || "#888";
340
-
341
- ctx.fillStyle = bgColor;
342
- ctx.fillRect(0, 0, W, H);
343
-
344
- // Grid lines
345
- ctx.strokeStyle = borderColor;
346
- ctx.lineWidth = 0.5;
347
- for (let i = 0; i <= 4; i++) {
348
- const x = pad + (i / 4) * (W - 2 * pad);
349
- const y = pad + (i / 4) * (H - 2 * pad);
350
- ctx.beginPath();
351
- ctx.moveTo(x, pad);
352
- ctx.lineTo(x, H - pad);
353
- ctx.stroke();
354
- ctx.beginPath();
355
- ctx.moveTo(pad, y);
356
- ctx.lineTo(W - pad, y);
357
- ctx.stroke();
358
- }
359
-
360
- // Axis labels
361
- ctx.fillStyle = mutedColor;
362
- ctx.font = "10px monospace";
363
- ctx.textAlign = "center";
364
- ctx.fillText("PC1", W / 2, H - 8);
365
- ctx.save();
366
- ctx.translate(12, H / 2);
367
- ctx.rotate(-Math.PI / 2);
368
- ctx.fillText("PC2", 0, 0);
369
- ctx.restore();
370
-
371
- // Draw points
372
- for (let i = 0; i < graph.points.length; i++) {
373
- const sx = toVectorGraph2DScreenX(
374
- graph.points[i][0],
375
- W,
376
- pad,
377
- graph.bounds,
378
- );
379
- const sy = toVectorGraph2DScreenY(
380
- graph.points[i][1],
381
- H,
382
- pad,
383
- graph.bounds,
384
- );
385
- const memory = graph.withEmbeddings[i];
386
- const color = graph.typeColors[memory.type] || accentColor;
387
- const isHovered = hoveredIdx === i;
388
-
389
- ctx.beginPath();
390
- ctx.arc(sx, sy, isHovered ? 6 : 4, 0, Math.PI * 2);
391
- ctx.fillStyle = color;
392
- ctx.globalAlpha = isHovered ? 1 : 0.7;
393
- ctx.fill();
394
- ctx.globalAlpha = 1;
395
-
396
- if (isHovered) {
397
- ctx.strokeStyle = "#fff";
398
- ctx.lineWidth = 1.5;
399
- ctx.stroke();
400
- }
401
- }
402
-
403
- // Tooltip for hovered point
404
- if (hoveredIdx !== null && hoveredIdx < graph.points.length) {
405
- const sx = toVectorGraph2DScreenX(
406
- graph.points[hoveredIdx][0],
407
- W,
408
- pad,
409
- graph.bounds,
410
- );
411
- const sy = toVectorGraph2DScreenY(
412
- graph.points[hoveredIdx][1],
413
- H,
414
- pad,
415
- graph.bounds,
416
- );
417
- const memory = graph.withEmbeddings[hoveredIdx];
418
- const label =
419
- memory.content.slice(0, 60) + (memory.content.length > 60 ? "..." : "");
420
-
421
- ctx.font = "11px sans-serif";
422
- const metrics = ctx.measureText(label);
423
- const tw = metrics.width + 12;
424
- const th = 22;
425
- let tx = sx + 10;
426
- let ty = sy - 10 - th;
427
- if (tx + tw > W) tx = sx - tw - 10;
428
- if (ty < 0) ty = sy + 10;
429
-
430
- ctx.fillStyle = "rgba(0,0,0,0.85)";
431
- ctx.fillRect(tx, ty, tw, th);
432
- ctx.fillStyle = "#fff";
433
- ctx.textAlign = "left";
434
- ctx.fillText(label, tx + 6, ty + 15);
435
- }
436
-
437
- // Legend
438
- const types = Object.keys(graph.typeColors);
439
- if (types.length > 1) {
440
- let lx = pad;
441
- const ly = H - 4;
442
- ctx.font = "10px sans-serif";
443
- ctx.textAlign = "left";
444
- for (const type of types) {
445
- if (!type || type === "undefined") continue;
446
- ctx.fillStyle = graph.typeColors[type];
447
- ctx.fillRect(lx, ly - 8, 8, 8);
448
- ctx.fillStyle = mutedColor;
449
- ctx.fillText(type, lx + 11, ly);
450
- lx += ctx.measureText(type).width + 24;
451
- }
452
- }
453
- }, [graph, hoveredIdx]);
454
-
455
- // Mouse interaction
456
- const handleMouseMove = useCallback(
457
- (e: React.MouseEvent<HTMLCanvasElement>) => {
458
- const canvas = canvasRef.current;
459
- if (!canvas || !graph) return;
460
- const rect = canvas.getBoundingClientRect();
461
- const mx = e.clientX - rect.left;
462
- const my = e.clientY - rect.top;
463
-
464
- const W = rect.width;
465
- const H = rect.height;
466
- const pad = 40;
467
-
468
- let closest = -1;
469
- let closestDist = 15; // max pixel distance
470
- for (let i = 0; i < graph.points.length; i++) {
471
- const sx = toVectorGraph2DScreenX(
472
- graph.points[i][0],
473
- W,
474
- pad,
475
- graph.bounds,
476
- );
477
- const sy = toVectorGraph2DScreenY(
478
- graph.points[i][1],
479
- H,
480
- pad,
481
- graph.bounds,
482
- );
483
- const dist = Math.sqrt((mx - sx) ** 2 + (my - sy) ** 2);
484
- if (dist < closestDist) {
485
- closestDist = dist;
486
- closest = i;
487
- }
488
- }
489
- setHoveredIdx(closest >= 0 ? closest : null);
490
- },
491
- [graph],
492
- );
493
-
494
- const handleClick = useCallback(() => {
495
- if (
496
- graph &&
497
- hoveredIdx !== null &&
498
- hoveredIdx < graph.withEmbeddings.length
499
- ) {
500
- onSelect(graph.withEmbeddings[hoveredIdx]);
501
- }
502
- }, [graph, hoveredIdx, onSelect]);
503
-
504
- if (!graph) {
505
- const withEmbeddings = memories.filter(hasEmbedding);
506
- return (
507
- <div className="text-center py-16">
508
- <div className="text-[var(--muted)] text-sm mb-2">
509
- {t("vectorbrowserview.NotEnoughEmbedding")}
510
- </div>
511
- <div className="text-[var(--muted)] text-xs">
512
- {t("vectorbrowserview.NeedAtLeast2Memo")} {withEmbeddings.length}.
513
- </div>
514
- </div>
515
- );
516
- }
517
-
518
- return (
519
- <div ref={containerRef} className="w-full">
520
- <div className="text-[11px] text-[var(--muted)] mb-2">
521
- {graph.withEmbeddings.length}{" "}
522
- {t("vectorbrowserview.vectorsProjectedTo")}
523
- </div>
524
- <canvas
525
- ref={canvasRef}
526
- className="w-full border border-[var(--border)] cursor-crosshair"
527
- style={{ height: 500 }}
528
- onMouseMove={handleMouseMove}
529
- onMouseLeave={() => setHoveredIdx(null)}
530
- onClick={handleClick}
531
- />
532
- </div>
533
- );
534
- }
535
-
536
- // ── 3D Graph sub-component (Three.js) ──────────────────────────────────
537
-
538
- function VectorGraph3D({
539
- memories,
540
- onSelect,
541
- }: {
542
- memories: MemoryRecord[];
543
- onSelect: (mem: MemoryRecord) => void;
544
- }) {
545
- const { t } = useApp();
546
- const containerRef = useRef<HTMLDivElement>(null);
547
- const rendererRef = useRef<THREE.WebGLRenderer | null>(null);
548
- const sceneRef = useRef<THREE.Scene | null>(null);
549
- const cameraRef = useRef<THREE.PerspectiveCamera | null>(null);
550
- const spheresRef = useRef<THREE.Mesh[]>([]);
551
- const animationRef = useRef<number>(0);
552
- const [hoveredIdx, setHoveredIdx] = useState<number | null>(null);
553
- const [tooltipPos, setTooltipPos] = useState<{ x: number; y: number } | null>(
554
- null,
555
- );
556
- const [rendererUnavailable, setRendererUnavailable] = useState(false);
557
- const isDraggingRef = useRef(false);
558
- const mouseDownPosRef = useRef<{ x: number; y: number } | null>(null);
559
- const cleanupRef = useRef<(() => void) | null>(null);
560
-
561
- const withEmbeddings = useMemo(
562
- () => memories.filter(hasEmbedding),
563
- [memories],
564
- );
565
-
566
- const points3D = useMemo(() => {
567
- if (withEmbeddings.length < 2) return [];
568
- const vecs = withEmbeddings.map((m) => m.embedding);
569
- return projectTo3D(vecs);
570
- }, [withEmbeddings]);
571
-
572
- // Color palette for types
573
- const typeColors = useMemo(() => {
574
- const types = [...new Set(withEmbeddings.map((m) => m.type))];
575
- const palette = [
576
- 0x6699ff, 0xf59e0b, 0x10b981, 0xef4444, 0x8b5cf6, 0xec4899, 0x06b6d4,
577
- 0x84cc16,
578
- ];
579
- const map: Record<string, number> = {};
580
- types.forEach((t, i) => {
581
- map[t] = palette[i % palette.length];
582
- });
583
- return map;
584
- }, [withEmbeddings]);
585
-
586
- // Initialize Three.js scene
587
- useEffect(() => {
588
- const container = containerRef.current;
589
- if (!container || points3D.length === 0) return;
590
-
591
- let cancelled = false;
592
- cleanupRef.current = null;
593
- setRendererUnavailable(false);
594
-
595
- // Async renderer creation — tries WebGPU, falls back to WebGL.
596
- // All scene setup runs inside this async IIFE so the useEffect callback
597
- // itself remains synchronous (required for React cleanup return).
598
- void (async () => {
599
- const W = container.clientWidth;
600
- const H = 550;
601
-
602
- // Scene
603
- const scene = new THREE.Scene();
604
- scene.background = new THREE.Color(0x111111);
605
- sceneRef.current = scene;
606
-
607
- // Camera
608
- const camera = new THREE.PerspectiveCamera(60, W / H, 0.1, 1000);
609
- camera.position.set(0, 0, 5);
610
- cameraRef.current = camera;
611
-
612
- let renderer: THREE.WebGLRenderer;
613
- try {
614
- renderer = await createVectorBrowserRenderer();
615
- } catch {
616
- if (!cancelled) {
617
- setRendererUnavailable(true);
618
- }
619
- return;
620
- }
621
-
622
- // Guard: if the effect was cleaned up while awaiting WebGPU init, abort.
623
- if (cancelled) {
624
- renderer.dispose();
625
- return;
626
- }
627
-
628
- const raycaster = new THREE.Raycaster();
629
- const pointer = new THREE.Vector2();
630
- const geometry = new THREE.SphereGeometry(0.06, 16, 16);
631
- const spheres: THREE.Mesh[] = [];
632
- let gridHelper: THREE.GridHelper | null = null;
633
- let axisGeom: THREE.BufferGeometry | null = null;
634
- let axisMat: THREE.LineBasicMaterial | null = null;
635
- let onMouseDown: ((e: MouseEvent) => void) | null = null;
636
- let onMouseUp: (() => void) | null = null;
637
- let onMouseMove: ((e: MouseEvent) => void) | null = null;
638
- let onClick: ((e: MouseEvent) => void) | null = null;
639
- let onWheel: ((e: WheelEvent) => void) | null = null;
640
- let onMouseLeave: (() => void) | null = null;
641
- let handleResize: (() => void) | null = null;
642
- let cleanedUp = false;
643
-
644
- cleanupRef.current = () => {
645
- if (cleanedUp) return;
646
- cleanedUp = true;
647
- cancelAnimationFrame(animationRef.current);
648
- if (handleResize) {
649
- window.removeEventListener("resize", handleResize);
650
- }
651
- if (onMouseDown) {
652
- renderer.domElement.removeEventListener("mousedown", onMouseDown);
653
- }
654
- if (onMouseUp) {
655
- renderer.domElement.removeEventListener("mouseup", onMouseUp);
656
- }
657
- if (onMouseMove) {
658
- renderer.domElement.removeEventListener("mousemove", onMouseMove);
659
- }
660
- if (onClick) {
661
- renderer.domElement.removeEventListener("click", onClick);
662
- }
663
- if (onWheel) {
664
- renderer.domElement.removeEventListener("wheel", onWheel);
665
- }
666
- if (onMouseLeave) {
667
- renderer.domElement.removeEventListener("mouseleave", onMouseLeave);
668
- }
669
- geometry.dispose();
670
- axisGeom?.dispose();
671
- axisMat?.dispose();
672
- if (gridHelper) {
673
- const gridMaterial = Array.isArray(gridHelper.material)
674
- ? gridHelper.material
675
- : [gridHelper.material];
676
- for (const material of gridMaterial) {
677
- material.dispose();
678
- }
679
- gridHelper.geometry.dispose();
680
- }
681
- for (const sphere of spheres) {
682
- const material = sphere.material;
683
- if (Array.isArray(material)) {
684
- for (const entry of material) {
685
- entry.dispose();
686
- }
687
- } else {
688
- material.dispose();
689
- }
690
- }
691
- renderer.dispose();
692
- rendererRef.current = null;
693
- sceneRef.current = null;
694
- cameraRef.current = null;
695
- spheresRef.current = [];
696
- if (container.contains(renderer.domElement)) {
697
- container.removeChild(renderer.domElement);
698
- }
699
- };
700
-
701
- renderer.setSize(W, H);
702
- renderer.setPixelRatio(
703
- Math.min(window.devicePixelRatio || 1, MAX_THREE_PIXEL_RATIO),
704
- );
705
- container.appendChild(renderer.domElement);
706
- rendererRef.current = renderer;
707
- if (cancelled) {
708
- cleanupRef.current?.();
709
- cleanupRef.current = null;
710
- return;
711
- }
712
-
713
- // Compute bounds for scaling
714
- let minX = Infinity,
715
- maxX = -Infinity;
716
- let minY = Infinity,
717
- maxY = -Infinity;
718
- let minZ = Infinity,
719
- maxZ = -Infinity;
720
- for (const [x, y, z] of points3D) {
721
- if (x < minX) minX = x;
722
- if (x > maxX) maxX = x;
723
- if (y < minY) minY = y;
724
- if (y > maxY) maxY = y;
725
- if (z < minZ) minZ = z;
726
- if (z > maxZ) maxZ = z;
727
- }
728
- const rangeX = maxX - minX || 1;
729
- const rangeY = maxY - minY || 1;
730
- const rangeZ = maxZ - minZ || 1;
731
- const maxRange = Math.max(rangeX, rangeY, rangeZ);
732
- const scale = 3 / maxRange;
733
- const centerX = (minX + maxX) / 2;
734
- const centerY = (minY + maxY) / 2;
735
- const centerZ = (minZ + maxZ) / 2;
736
-
737
- for (let i = 0; i < points3D.length; i++) {
738
- const [x, y, z] = points3D[i];
739
- const mem = withEmbeddings[i];
740
- const color = typeColors[mem.type] ?? 0x6699ff;
741
- const material = new THREE.MeshBasicMaterial({
742
- color,
743
- transparent: true,
744
- opacity: 0.85,
745
- });
746
- const sphere = new THREE.Mesh(geometry, material);
747
- sphere.position.set(
748
- (x - centerX) * scale,
749
- (y - centerY) * scale,
750
- (z - centerZ) * scale,
751
- );
752
- sphere.userData = { index: i };
753
- scene.add(sphere);
754
- spheres.push(sphere);
755
- }
756
- spheresRef.current = spheres;
757
-
758
- // Add subtle grid helper
759
- gridHelper = new THREE.GridHelper(6, 12, 0x333333, 0x222222);
760
- gridHelper.position.y = -2;
761
- scene.add(gridHelper);
762
-
763
- // Add axis lines
764
- const axisLength = 2.5;
765
- axisGeom = new THREE.BufferGeometry();
766
- const axisPositions = new Float32Array([
767
- -axisLength,
768
- 0,
769
- 0,
770
- axisLength,
771
- 0,
772
- 0, // X axis
773
- 0,
774
- -axisLength,
775
- 0,
776
- 0,
777
- axisLength,
778
- 0, // Y axis
779
- 0,
780
- 0,
781
- -axisLength,
782
- 0,
783
- 0,
784
- axisLength, // Z axis
785
- ]);
786
- axisGeom.setAttribute(
787
- "position",
788
- new THREE.BufferAttribute(axisPositions, 3),
789
- );
790
- axisMat = new THREE.LineBasicMaterial({ color: 0x444444 });
791
- const axisLines = new THREE.LineSegments(axisGeom, axisMat);
792
- scene.add(axisLines);
793
-
794
- // Simple orbit controls (manual implementation)
795
- let theta = 0;
796
- let phi = Math.PI / 4;
797
- let radius = 5;
798
- let targetTheta = theta;
799
- let targetPhi = phi;
800
- let targetRadius = radius;
801
- const updatePointerFromEvent = (e: MouseEvent) => {
802
- const rect = renderer.domElement.getBoundingClientRect();
803
- pointer.set(
804
- ((e.clientX - rect.left) / rect.width) * 2 - 1,
805
- -((e.clientY - rect.top) / rect.height) * 2 + 1,
806
- );
807
- return rect;
808
- };
809
-
810
- const updateCamera = () => {
811
- theta += (targetTheta - theta) * 0.1;
812
- phi += (targetPhi - phi) * 0.1;
813
- radius += (targetRadius - radius) * 0.1;
814
- phi = Math.max(0.1, Math.min(Math.PI - 0.1, phi));
815
- camera.position.x = radius * Math.sin(phi) * Math.cos(theta);
816
- camera.position.y = radius * Math.cos(phi);
817
- camera.position.z = radius * Math.sin(phi) * Math.sin(theta);
818
- camera.lookAt(0, 0, 0);
819
- };
820
-
821
- onMouseDown = (e: MouseEvent) => {
822
- isDraggingRef.current = true;
823
- mouseDownPosRef.current = { x: e.clientX, y: e.clientY };
824
- };
825
-
826
- onMouseUp = () => {
827
- isDraggingRef.current = false;
828
- mouseDownPosRef.current = null;
829
- };
830
-
831
- onMouseMove = (e: MouseEvent) => {
832
- if (isDraggingRef.current) {
833
- targetTheta -= e.movementX * 0.01;
834
- targetPhi -= e.movementY * 0.01;
835
- }
836
-
837
- // Raycasting for hover
838
- const rect = updatePointerFromEvent(e);
839
- raycaster.setFromCamera(pointer, camera);
840
- const intersects = raycaster.intersectObjects(spheres);
841
-
842
- if (intersects.length > 0) {
843
- const idx = intersects[0].object.userData.index;
844
- setHoveredIdx(idx);
845
- setTooltipPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });
846
- // Highlight hovered sphere
847
- spheres.forEach((s, i) => {
848
- const mat = s.material as THREE.MeshBasicMaterial;
849
- mat.opacity = i === idx ? 1 : 0.5;
850
- s.scale.setScalar(i === idx ? 1.5 : 1);
851
- });
852
- } else {
853
- setHoveredIdx(null);
854
- setTooltipPos(null);
855
- spheres.forEach((s) => {
856
- const mat = s.material as THREE.MeshBasicMaterial;
857
- mat.opacity = 0.85;
858
- s.scale.setScalar(1);
859
- });
860
- }
861
- };
862
-
863
- onClick = (e: MouseEvent) => {
864
- // Only trigger click if we didn't drag much
865
- if (mouseDownPosRef.current) {
866
- const dx = Math.abs(e.clientX - mouseDownPosRef.current.x);
867
- const dy = Math.abs(e.clientY - mouseDownPosRef.current.y);
868
- if (dx > 5 || dy > 5) return; // Was a drag, not a click
869
- }
870
-
871
- updatePointerFromEvent(e);
872
- raycaster.setFromCamera(pointer, camera);
873
- const intersects = raycaster.intersectObjects(spheres);
874
- if (intersects.length > 0) {
875
- const idx = intersects[0].object.userData.index;
876
- if (idx < withEmbeddings.length) {
877
- onSelect(withEmbeddings[idx]);
878
- }
879
- }
880
- };
881
-
882
- onWheel = (e: WheelEvent) => {
883
- e.preventDefault();
884
- targetRadius += e.deltaY * 0.005;
885
- targetRadius = Math.max(2, Math.min(15, targetRadius));
886
- };
887
-
888
- onMouseLeave = () => {
889
- isDraggingRef.current = false;
890
- setHoveredIdx(null);
891
- setTooltipPos(null);
892
- };
893
-
894
- renderer.domElement.addEventListener("mousedown", onMouseDown);
895
- renderer.domElement.addEventListener("mouseup", onMouseUp);
896
- renderer.domElement.addEventListener("mousemove", onMouseMove);
897
- renderer.domElement.addEventListener("click", onClick);
898
- renderer.domElement.addEventListener("wheel", onWheel, {
899
- passive: false,
900
- });
901
- renderer.domElement.addEventListener("mouseleave", onMouseLeave);
902
- if (cancelled) {
903
- cleanupRef.current?.();
904
- cleanupRef.current = null;
905
- return;
906
- }
907
-
908
- // Animation loop
909
- const animate = () => {
910
- updateCamera();
911
- renderer.render(scene, camera);
912
- animationRef.current = requestAnimationFrame(animate);
913
- };
914
- animate();
915
-
916
- // Resize handler
917
- handleResize = () => {
918
- const newW = container.clientWidth;
919
- camera.aspect = newW / H;
920
- camera.updateProjectionMatrix();
921
- renderer.setSize(newW, H);
922
- };
923
- window.addEventListener("resize", handleResize);
924
- })(); // end async IIFE
925
-
926
- return () => {
927
- cancelled = true;
928
- cleanupRef.current?.();
929
- cleanupRef.current = null;
930
- };
931
- }, [points3D, withEmbeddings, typeColors, onSelect]);
932
-
933
- if (withEmbeddings.length < 2) {
934
- return (
935
- <div className="text-center py-16">
936
- <div className="text-[var(--muted)] text-sm mb-2">
937
- {t("vectorbrowserview.NotEnoughEmbedding1")}
938
- </div>
939
- <div className="text-[var(--muted)] text-xs">
940
- {t("vectorbrowserview.NeedAtLeast2Memo")} {withEmbeddings.length}.
941
- </div>
942
- </div>
943
- );
944
- }
945
-
946
- if (rendererUnavailable) {
947
- return (
948
- <div className="border border-[var(--border)] bg-[var(--card)] px-4 py-10 text-center">
949
- <div className="text-sm text-[var(--txt)]">
950
- 3D view unavailable in this environment.
951
- </div>
952
- <div className="mt-2 text-xs text-[var(--muted)]">
953
- The current runtime could not initialize a renderer.
954
- </div>
955
- </div>
956
- );
957
- }
958
-
959
- const hoveredMem = hoveredIdx !== null ? withEmbeddings[hoveredIdx] : null;
960
-
961
- return (
962
- <div className="relative">
963
- <div className="text-[11px] text-[var(--muted)] mb-2">
964
- {withEmbeddings.length} {t("vectorbrowserview.vectorsProjectedTo1")}
965
- </div>
966
- <div
967
- ref={containerRef}
968
- className="w-full border border-[var(--border)] cursor-grab active:cursor-grabbing"
969
- style={{ height: 550 }}
970
- />
971
- {/* Tooltip */}
972
- {hoveredMem && tooltipPos && (
973
- <div
974
- className="absolute pointer-events-none bg-black/90 text-white text-[11px] px-3 py-2 max-w-[300px] z-10"
975
- style={{
976
- left: tooltipPos.x + 15,
977
- top: tooltipPos.y + 15,
978
- transform: tooltipPos.x > 400 ? "translateX(-100%)" : undefined,
979
- }}
980
- >
981
- <div className="font-medium mb-1 truncate">
982
- {hoveredMem.type && hoveredMem.type !== "undefined" && (
983
- <span className="px-1.5 py-0.5 bg-[var(--accent)]/30 text-[var(--accent)] mr-2 text-[10px]">
984
- {hoveredMem.type}
985
- </span>
986
- )}
987
- {hoveredMem.id.slice(0, 12)}...
988
- </div>
989
- <div className="text-[var(--muted)] line-clamp-3">
990
- {hoveredMem.content.slice(0, 150)}
991
- {hoveredMem.content.length > 150 ? "..." : ""}
992
- </div>
993
- </div>
994
- )}
995
- {/* Legend */}
996
- <div className="flex flex-wrap gap-3 mt-2 text-[10px]">
997
- {Object.entries(typeColors).map(
998
- ([type, color]) =>
999
- type &&
1000
- type !== "undefined" && (
1001
- <div key={type} className="flex items-center gap-1.5">
1002
- <div
1003
- className="w-3 h-3 rounded-full"
1004
- style={{
1005
- backgroundColor: `#${color.toString(16).padStart(6, "0")}`,
1006
- }}
1007
- />
1008
- <span className="text-[var(--muted)]">{type}</span>
1009
- </div>
1010
- ),
1011
- )}
1012
- </div>
1013
- </div>
1014
- );
1015
- }
1016
-
1017
- // ── Detail modal ───────────────────────────────────────────────────────
1018
-
1019
- function MemoryDetailModal({
1020
- memory,
1021
- onClose,
1022
- }: {
1023
- memory: MemoryRecord;
1024
- onClose: () => void;
1025
- }) {
1026
- const { t } = useApp();
1027
- return (
1028
- <div
1029
- className="fixed inset-0 bg-black/80 z-50 flex items-center justify-center p-8"
1030
- onClick={(e) => {
1031
- if (e.target === e.currentTarget) onClose();
1032
- }}
1033
- onKeyDown={(e) => {
1034
- if (e.key === "Escape" || e.key === "Enter" || e.key === " ") {
1035
- e.preventDefault();
1036
- onClose();
1037
- }
1038
- }}
1039
- role="dialog"
1040
- aria-modal="true"
1041
- >
1042
- <div className="bg-[var(--card)] border border-[var(--border)] max-w-[700px] w-full max-h-[90vh] overflow-auto">
1043
- {/* Header */}
1044
- <div className="flex items-center justify-between p-3 border-b border-[var(--border)]">
1045
- <div className="text-xs font-medium text-[var(--txt)]">
1046
- {t("vectorbrowserview.MemoryDetail")}
1047
- </div>
1048
- <Button
1049
- variant="ghost"
1050
- size="icon"
1051
- className="text-[var(--muted)] hover:text-[var(--txt)] hover:bg-transparent h-6 w-6 text-lg"
1052
- onClick={onClose}
1053
- >
1054
- ×
1055
- </Button>
1056
- </div>
1057
-
1058
- {/* Content */}
1059
- <div className="p-4">
1060
- <div className="text-[11px] text-[var(--muted)] mb-1 uppercase font-bold">
1061
- {t("vectorbrowserview.Content")}
1062
- </div>
1063
- <div className="text-xs text-[var(--txt)] whitespace-pre-wrap break-words mb-4 p-2 bg-[var(--bg)] border border-[var(--border)] max-h-[200px] overflow-auto">
1064
- {memory.content || "(empty)"}
1065
- </div>
1066
-
1067
- {/* Metadata */}
1068
- <div className="text-[11px] text-[var(--muted)] mb-1 uppercase font-bold">
1069
- {t("vectorbrowserview.Metadata")}
1070
- </div>
1071
- <div className="grid grid-cols-2 gap-x-4 gap-y-1 text-xs mb-4">
1072
- <span className="text-[var(--muted)]">ID</span>
1073
- <span className="text-[var(--txt)] font-mono truncate">
1074
- {memory.id || "—"}
1075
- </span>
1076
- <span className="text-[var(--muted)]">
1077
- {t("vectorbrowserview.Type")}
1078
- </span>
1079
- <span className="text-[var(--txt)]">{memory.type || "—"}</span>
1080
- <span className="text-[var(--muted)]">
1081
- {t("vectorbrowserview.Room")}
1082
- </span>
1083
- <span className="text-[var(--txt)] font-mono truncate">
1084
- {memory.roomId || "—"}
1085
- </span>
1086
- <span className="text-[var(--muted)]">
1087
- {t("vectorbrowserview.Entity")}
1088
- </span>
1089
- <span className="text-[var(--txt)] font-mono truncate">
1090
- {memory.entityId || "—"}
1091
- </span>
1092
- <span className="text-[var(--muted)]">
1093
- {t("vectorbrowserview.Created")}
1094
- </span>
1095
- <span className="text-[var(--txt)]">{memory.createdAt || "—"}</span>
1096
- <span className="text-[var(--muted)]">
1097
- {t("vectorbrowserview.Unique")}
1098
- </span>
1099
- <span className="text-[var(--txt)]">
1100
- {memory.unique ? "Yes" : "No"}
1101
- </span>
1102
- </div>
1103
-
1104
- {/* Embedding */}
1105
- {memory.embedding && (
1106
- <>
1107
- <div className="text-[11px] text-[var(--muted)] mb-1 uppercase font-bold">
1108
- {t("vectorbrowserview.Embedding")}
1109
- {memory.embedding.length} {t("vectorbrowserview.dimensions")}
1110
- </div>
1111
- <div className="p-2 bg-[var(--bg)] border border-[var(--border)] text-[10px] font-mono text-[var(--muted)] max-h-[150px] overflow-auto break-all mb-4">
1112
- [{memory.embedding.map((v) => v.toFixed(6)).join(", ")}]
1113
- </div>
1114
- </>
1115
- )}
1116
-
1117
- {/* Raw data */}
1118
- <details>
1119
- <summary className="text-[11px] text-[var(--muted)] cursor-pointer hover:text-[var(--txt)] uppercase font-bold mb-1">
1120
- {t("vectorbrowserview.RawRecord")}
1121
- </summary>
1122
- <div className="p-2 bg-[var(--bg)] border border-[var(--border)] text-[10px] font-mono text-[var(--muted)] max-h-[200px] overflow-auto break-all">
1123
- {JSON.stringify(memory.raw, null, 2)}
1124
- </div>
1125
- </details>
1126
- </div>
1127
- </div>
1128
- </div>
1129
- );
1130
- }
1131
-
1132
- // ── Main component ─────────────────────────────────────────────────────
1133
-
1134
- export function VectorBrowserView() {
1135
- const { t } = useApp();
1136
- const [tables, setTables] = useState<TableInfo[]>([]);
1137
- const [selectedTable, setSelectedTable] = useState("");
1138
- const [memories, setMemories] = useState<MemoryRecord[]>([]);
1139
- const [totalCount, setTotalCount] = useState(0);
1140
- const [page, setPage] = useState(0);
1141
- const [loading, setLoading] = useState(true);
1142
- const [error, setError] = useState("");
1143
- const [search, setSearch] = useState("");
1144
- const [searchInput, setSearchInput] = useState("");
1145
- const [selectedMemory, setSelectedMemory] = useState<MemoryRecord | null>(
1146
- null,
1147
- );
1148
- const [viewMode, setViewMode] = useState<ViewMode>("list");
1149
- const [graphMemories, setGraphMemories] = useState<MemoryRecord[]>([]);
1150
- const [graphLoading, setGraphLoading] = useState(false);
1151
- const [stats, setStats] = useState<{
1152
- total: number;
1153
- dimensions: number;
1154
- uniqueCount: number;
1155
- } | null>(null);
1156
-
1157
- // Track whether the `embeddings` table exists for JOIN queries
1158
- const [hasEmbeddingsTable, setHasEmbeddingsTable] = useState(false);
1159
-
1160
- // Discover vector/memory tables
1161
- const loadTables = useCallback(async () => {
1162
- try {
1163
- const { tables: allTables } = await client.getDatabaseTables();
1164
- const vectorTables = allTables.filter((t) => {
1165
- const n = t.name.toLowerCase();
1166
- return (
1167
- n.includes("memor") ||
1168
- n.includes("embed") ||
1169
- n.includes("vector") ||
1170
- n.includes("knowledge")
1171
- );
1172
- });
1173
- const available = vectorTables.length > 0 ? vectorTables : allTables;
1174
- setTables(available);
1175
-
1176
- // Check for separate embeddings table (elizaOS stores vectors there)
1177
- const embTbl = allTables.find((t) => t.name === "embeddings");
1178
- setHasEmbeddingsTable(!!embTbl);
1179
-
1180
- if (available.length > 0 && !selectedTable) {
1181
- const preferred =
1182
- available.find((t) => t.name.toLowerCase() === "memories") ??
1183
- available.find((t) => t.name.toLowerCase().includes("memor"));
1184
- setSelectedTable(preferred?.name ?? available[0].name);
1185
- }
1186
- } catch (err) {
1187
- const msg = err instanceof Error ? err.message : "error";
1188
- if (msg === "Failed to fetch" || msg.includes("fetch")) {
1189
- setError("Cannot connect to database. Make sure the agent is running.");
1190
- } else {
1191
- setError(`Failed to load tables: ${msg}`);
1192
- }
1193
- }
1194
- }, [selectedTable]);
1195
-
1196
- // Build a SELECT that casts any vector/embedding column to text so the raw
1197
- // driver returns a parseable string instead of a binary blob.
1198
- const buildSelect = useCallback(async (table: string): Promise<string> => {
1199
- try {
1200
- const colResult: QueryResult = await client.executeDatabaseQuery(
1201
- `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '${table.replace(/'/g, "''")}' AND table_schema NOT IN ('pg_catalog','information_schema') ORDER BY ordinal_position`,
1202
- );
1203
- const cols = colResult.rows.map((r) => {
1204
- const name = String(r.column_name);
1205
- const dtype = String(r.data_type).toLowerCase();
1206
- // Cast USER-DEFINED types (pgvector) and bytea to text
1207
- if (
1208
- dtype === "user-defined" ||
1209
- dtype === "bytea" ||
1210
- dtype === "vector"
1211
- ) {
1212
- return `"${name}"::text AS "${name}"`;
1213
- }
1214
- return `"${name}"`;
1215
- });
1216
- if (cols.length > 0) return cols.join(", ");
1217
- } catch {
1218
- // fall through to SELECT *
1219
- }
1220
- return "*";
1221
- }, []);
1222
-
1223
- /**
1224
- * Build a query that JOINs memories with the embeddings table when applicable.
1225
- * The embeddings table stores vectors in dim_* columns (pgvector), which we
1226
- * cast to ::text so the driver returns a parseable string.
1227
- */
1228
- const buildJoinQuery = useCallback(
1229
- (opts: { where?: string; limit: number; offset?: number }): string => {
1230
- const isMemories = selectedTable === "memories" && hasEmbeddingsTable;
1231
- const { where, limit, offset } = opts;
1232
-
1233
- if (isMemories) {
1234
- // Build dim column selects with ::text cast
1235
- const dimCols = DIM_COLUMNS.map((d) => `e."${d}"::text AS "${d}"`).join(
1236
- ", ",
1237
- );
1238
- return [
1239
- `SELECT m.*, ${dimCols}`,
1240
- `FROM "memories" m`,
1241
- `LEFT JOIN "embeddings" e ON e."memory_id" = m."id"`,
1242
- where ? `WHERE ${where}` : "",
1243
- `ORDER BY m."created_at" DESC`,
1244
- `LIMIT ${limit}`,
1245
- offset ? `OFFSET ${offset}` : "",
1246
- ]
1247
- .filter(Boolean)
1248
- .join(" ");
1249
- }
1250
-
1251
- // For other tables, use buildSelect to cast any vector columns
1252
- return ""; // signal to caller to use the old path
1253
- },
1254
- [selectedTable, hasEmbeddingsTable],
1255
- );
1256
-
1257
- // Load memory records for list view
1258
- const loadMemories = useCallback(async () => {
1259
- if (!selectedTable) return;
1260
- setLoading(true);
1261
- setError("");
1262
- try {
1263
- const offset = page * PAGE_SIZE;
1264
- const searchEscaped = search.replace(/'/g, "''");
1265
- const countWhere = search
1266
- ? ` WHERE "content"::text LIKE '%${searchEscaped}%'`
1267
- : "";
1268
- const joinWhere = search
1269
- ? `m."content"::text LIKE '%${searchEscaped}%'`
1270
- : undefined;
1271
-
1272
- const countResult: QueryResult = await client.executeDatabaseQuery(
1273
- `SELECT COUNT(*) as cnt FROM "${selectedTable}"${countWhere}`,
1274
- );
1275
- const total = Number(countResult.rows[0]?.cnt ?? 0);
1276
- setTotalCount(total);
1277
-
1278
- // Try JOIN path for memories + embeddings
1279
- const joinSql = buildJoinQuery({
1280
- where: joinWhere,
1281
- limit: PAGE_SIZE,
1282
- offset,
1283
- });
1284
- let result: QueryResult;
1285
-
1286
- if (joinSql) {
1287
- result = await client.executeDatabaseQuery(joinSql);
1288
- } else {
1289
- const selectCols = await buildSelect(selectedTable);
1290
- const plainWhere = search
1291
- ? ` WHERE "content"::text LIKE '%${searchEscaped}%'`
1292
- : "";
1293
- result = await client.executeDatabaseQuery(
1294
- `SELECT ${selectCols} FROM "${selectedTable}"${plainWhere} LIMIT ${PAGE_SIZE} OFFSET ${offset}`,
1295
- );
1296
- }
1297
- setMemories(result.rows.map(rowToMemory));
1298
-
1299
- // Stats on first load
1300
- if (page === 0 && !search) {
1301
- let dims = 0;
1302
- let uniqueCount = 0;
1303
-
1304
- if (result.rows.length > 0) {
1305
- const sample = rowToMemory(result.rows[0]);
1306
- if (sample.embedding) dims = sample.embedding.length;
1307
- }
1308
-
1309
- try {
1310
- const uniqueResult: QueryResult = await client.executeDatabaseQuery(
1311
- `SELECT COUNT(*) as cnt FROM "${selectedTable}" WHERE "unique" = true OR "unique" = 1`,
1312
- );
1313
- uniqueCount = Number(uniqueResult.rows[0]?.cnt ?? 0);
1314
- } catch {
1315
- // column might not exist
1316
- }
1317
-
1318
- setStats({ total, dimensions: dims, uniqueCount });
1319
- }
1320
- } catch (err) {
1321
- setError(
1322
- `Failed to load memories: ${err instanceof Error ? err.message : "error"}`,
1323
- );
1324
- }
1325
- setLoading(false);
1326
- }, [selectedTable, page, search, buildSelect, buildJoinQuery]);
1327
-
1328
- // Load embeddings for graph view (fetch more rows to make graph useful)
1329
- // Only include rows that actually have embeddings (INNER JOIN or filter).
1330
- const loadGraphData = useCallback(async () => {
1331
- if (!selectedTable) return;
1332
- setGraphLoading(true);
1333
- try {
1334
- const isMemories = selectedTable === "memories" && hasEmbeddingsTable;
1335
- let result: QueryResult;
1336
-
1337
- if (isMemories) {
1338
- // INNER JOIN ensures only rows with embeddings are returned
1339
- const dimCols = DIM_COLUMNS.map((d) => `e."${d}"::text AS "${d}"`).join(
1340
- ", ",
1341
- );
1342
- result = await client.executeDatabaseQuery(
1343
- `SELECT m.*, ${dimCols} FROM "memories" m INNER JOIN "embeddings" e ON e."memory_id" = m."id" ORDER BY m."created_at" DESC LIMIT 500`,
1344
- );
1345
- } else {
1346
- const selectCols = await buildSelect(selectedTable);
1347
- result = await client.executeDatabaseQuery(
1348
- `SELECT ${selectCols} FROM "${selectedTable}" LIMIT 500`,
1349
- );
1350
- }
1351
- setGraphMemories(result.rows.map(rowToMemory));
1352
- } catch (err) {
1353
- setError(
1354
- `Failed to load graph data: ${err instanceof Error ? err.message : "error"}`,
1355
- );
1356
- }
1357
- setGraphLoading(false);
1358
- }, [selectedTable, buildSelect, hasEmbeddingsTable]);
1359
-
1360
- useEffect(() => {
1361
- loadTables();
1362
- }, [loadTables]);
1363
-
1364
- useEffect(() => {
1365
- if (viewMode === "list") loadMemories();
1366
- }, [loadMemories, viewMode]);
1367
-
1368
- useEffect(() => {
1369
- if (viewMode === "graph" || viewMode === "3d") loadGraphData();
1370
- }, [loadGraphData, viewMode]);
1371
-
1372
- const handleSearch = () => {
1373
- setSearch(searchInput);
1374
- setPage(0);
1375
- };
1376
-
1377
- const totalPages = Math.ceil(totalCount / PAGE_SIZE);
1378
-
1379
- // Show connection error state prominently
1380
- const isConnectionError = error?.includes("agent is running");
1381
-
1382
- return (
1383
- <div>
1384
- {/* Stats bar */}
1385
- {stats && !isConnectionError && (
1386
- <div className="flex gap-4 mb-4 text-[11px] text-[var(--muted)]">
1387
- <span>
1388
- {Number(stats.total).toLocaleString()}{" "}
1389
- {t("vectorbrowserview.memories")}
1390
- </span>
1391
- {Number(stats.uniqueCount) > 0 && (
1392
- <span>
1393
- {Number(stats.uniqueCount).toLocaleString()}{" "}
1394
- {t("vectorbrowserview.unique")}
1395
- </span>
1396
- )}
1397
- {Number(stats.dimensions) > 0 && (
1398
- <span>
1399
- {stats.dimensions} {t("vectorbrowserview.dimensions1")}
1400
- </span>
1401
- )}
1402
- </div>
1403
- )}
1404
-
1405
- {/* Toolbar - hide when not connected */}
1406
- {!isConnectionError && (
1407
- <div className="flex flex-wrap items-center gap-3 mb-4">
1408
- {viewMode === "list" && (
1409
- <div className="flex gap-1">
1410
- <Input
1411
- type="text"
1412
- placeholder={t("vectorbrowserview.SearchContent")}
1413
- value={searchInput}
1414
- onChange={(e) => setSearchInput(e.target.value)}
1415
- onKeyDown={(e) => e.key === "Enter" && handleSearch()}
1416
- className="w-[220px] bg-card text-xs"
1417
- />
1418
- <Button variant="default" size="sm" onClick={handleSearch}>
1419
- {t("vectorbrowserview.Search")}
1420
- </Button>
1421
- </div>
1422
- )}
1423
-
1424
- {tables.length > 1 && (
1425
- <select
1426
- value={selectedTable}
1427
- onChange={(e) => {
1428
- setSelectedTable(e.target.value);
1429
- setPage(0);
1430
- setSearch("");
1431
- setSearchInput("");
1432
- }}
1433
- className="px-2 py-1.5 border border-[var(--border)] bg-[var(--card)] text-[var(--txt)] text-xs"
1434
- >
1435
- {tables.map((t) => (
1436
- <option key={t.name} value={t.name}>
1437
- {t.name} (
1438
- {typeof t.rowCount === "object"
1439
- ? JSON.stringify(t.rowCount)
1440
- : t.rowCount}
1441
- )
1442
- </option>
1443
- ))}
1444
- </select>
1445
- )}
1446
-
1447
- {/* View mode toggle */}
1448
- <div className="flex gap-1 ml-auto">
1449
- <Button
1450
- variant={viewMode === "list" ? "default" : "outline"}
1451
- size="sm"
1452
- onClick={() => setViewMode("list")}
1453
- >
1454
- {t("vectorbrowserview.List")}
1455
- </Button>
1456
- <Button
1457
- variant={viewMode === "graph" ? "default" : "outline"}
1458
- size="sm"
1459
- onClick={() => setViewMode("graph")}
1460
- >
1461
- 2D
1462
- </Button>
1463
- <Button
1464
- variant={viewMode === "3d" ? "default" : "outline"}
1465
- size="sm"
1466
- onClick={() => setViewMode("3d")}
1467
- >
1468
- 3D
1469
- </Button>
1470
- </div>
1471
-
1472
- {viewMode === "list" && (
1473
- <span className="text-[11px] text-[var(--muted)]">
1474
- {Number(totalCount) > 0
1475
- ? `${page * PAGE_SIZE + 1}-${Math.min((page + 1) * PAGE_SIZE, Number(totalCount))} of ${Number(totalCount).toLocaleString()}`
1476
- : ""}
1477
- </span>
1478
- )}
1479
- </div>
1480
- )}
1481
-
1482
- {error &&
1483
- (error.includes("agent is running") ? (
1484
- <div className="text-center py-16">
1485
- <div className="text-[var(--muted)] text-sm mb-2">
1486
- {t("vectorbrowserview.DatabaseNotAvailab")}
1487
- </div>
1488
- <div className="text-[var(--muted)] text-xs mb-4">
1489
- {t("vectorbrowserview.StartTheAgentToB")}
1490
- </div>
1491
- <Button
1492
- variant="default"
1493
- size="sm"
1494
- onClick={() => {
1495
- setError("");
1496
- loadTables();
1497
- }}
1498
- >
1499
- {t("vectorbrowserview.RetryConnection")}
1500
- </Button>
1501
- </div>
1502
- ) : (
1503
- <div className="p-2.5 border border-[var(--danger)] text-[var(--danger)] text-xs mb-3">
1504
- {error}
1505
- </div>
1506
- ))}
1507
-
1508
- {/* 2D Graph view */}
1509
- {viewMode === "graph" &&
1510
- (graphLoading ? (
1511
- <div className="text-center py-16 text-[var(--muted)] text-sm italic">
1512
- {t("vectorbrowserview.LoadingEmbeddings")}
1513
- </div>
1514
- ) : (
1515
- <VectorGraph memories={graphMemories} onSelect={setSelectedMemory} />
1516
- ))}
1517
-
1518
- {/* 3D Graph view */}
1519
- {viewMode === "3d" &&
1520
- (graphLoading ? (
1521
- <div className="text-center py-16 text-[var(--muted)] text-sm italic">
1522
- {t("vectorbrowserview.LoadingEmbeddings")}
1523
- </div>
1524
- ) : (
1525
- <VectorGraph3D
1526
- memories={graphMemories}
1527
- onSelect={setSelectedMemory}
1528
- />
1529
- ))}
1530
-
1531
- {/* List view */}
1532
- {viewMode === "list" &&
1533
- (loading ? (
1534
- <div className="text-center py-16 text-[var(--muted)] text-sm italic">
1535
- {t("vectorbrowserview.LoadingMemories")}
1536
- </div>
1537
- ) : memories.length === 0 ? (
1538
- <div className="text-center py-16">
1539
- <div className="text-[var(--muted)] text-sm mb-2">
1540
- {t("vectorbrowserview.NoMemoriesFound")}
1541
- </div>
1542
- <div className="text-[var(--muted)] text-xs">
1543
- {search
1544
- ? "No records match your search query."
1545
- : "No memory records detected in the database."}
1546
- </div>
1547
- </div>
1548
- ) : (
1549
- <div className="flex flex-col gap-2">
1550
- {memories.map((mem) => (
1551
- <Button
1552
- key={mem.id || `${mem.content.slice(0, 30)}-${mem.createdAt}`}
1553
- variant="outline"
1554
- className="justify-start items-start text-left h-auto p-3 hover:border-accent w-full flex flex-col"
1555
- onClick={() => setSelectedMemory(mem)}
1556
- >
1557
- {/* Content preview */}
1558
- <div className="text-xs text-[var(--txt)] mb-2 whitespace-pre-wrap break-words">
1559
- {mem.content.length > 200
1560
- ? `${mem.content.slice(0, 200)}...`
1561
- : mem.content}
1562
- </div>
1563
-
1564
- {/* Metadata row */}
1565
- <div className="flex flex-wrap items-center gap-3 text-[10px] text-[var(--muted)]">
1566
- {mem.type && mem.type !== "undefined" && (
1567
- <span className="px-1.5 py-0.5 bg-[var(--accent)]/10 text-[var(--accent)]">
1568
- {mem.type}
1569
- </span>
1570
- )}
1571
- {mem.roomId && mem.roomId !== "undefined" && (
1572
- <span>
1573
- {t("vectorbrowserview.Room1")} {mem.roomId.slice(0, 12)}
1574
- </span>
1575
- )}
1576
- {mem.entityId && mem.entityId !== "undefined" && (
1577
- <span>
1578
- {t("vectorbrowserview.Entity1")}{" "}
1579
- {mem.entityId.slice(0, 12)}
1580
- </span>
1581
- )}
1582
- {mem.createdAt && mem.createdAt !== "undefined" && (
1583
- <span>{mem.createdAt}</span>
1584
- )}
1585
- {mem.unique && (
1586
- <span className="px-1.5 py-0.5 bg-green-500/20 text-green-400 font-bold">
1587
- {t("vectorbrowserview.unique")}
1588
- </span>
1589
- )}
1590
- {mem.embedding && (
1591
- <span className="font-mono">[{mem.embedding.length}d]</span>
1592
- )}
1593
- </div>
1594
- </Button>
1595
- ))}
1596
- </div>
1597
- ))}
1598
-
1599
- {/* Pagination (list view only) */}
1600
- {viewMode === "list" && totalPages > 1 && (
1601
- <div className="flex items-center justify-center gap-3 mt-4 pb-4">
1602
- <Button
1603
- variant="default"
1604
- size="sm"
1605
- disabled={page === 0}
1606
- onClick={() => setPage((p) => p - 1)}
1607
- >
1608
- {t("vectorbrowserview.Prev")}
1609
- </Button>
1610
- <span className="text-[11px] text-[var(--muted)]">
1611
- {t("vectorbrowserview.Page")} {page + 1} of {totalPages}
1612
- </span>
1613
- <Button
1614
- variant="default"
1615
- size="sm"
1616
- disabled={page >= totalPages - 1}
1617
- onClick={() => setPage((p) => p + 1)}
1618
- >
1619
- {t("vectorbrowserview.Next")}
1620
- </Button>
1621
- </div>
1622
- )}
1623
-
1624
- {/* Detail modal */}
1625
- {selectedMemory && (
1626
- <MemoryDetailModal
1627
- memory={selectedMemory}
1628
- onClose={() => setSelectedMemory(null)}
1629
- />
1630
- )}
1631
- </div>
1632
- );
1633
- }