@elizaos/ui 2.0.0-alpha.385 → 2.0.0-alpha.392

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 (369) hide show
  1. package/apps/app-companion/src/components/companion/CompanionAppView.d.ts.map +1 -1
  2. package/apps/app-companion/src/components/companion/CompanionAppView.js +6 -4
  3. package/apps/app-companion/src/components/companion/CompanionView.d.ts.map +1 -1
  4. package/apps/app-companion/src/components/companion/CompanionView.js +6 -4
  5. package/apps/app-lifeops/src/api/client-lifeops.js +6 -0
  6. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts +3 -0
  7. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts.map +1 -0
  8. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.js +189 -0
  9. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts +2 -0
  10. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts.map +1 -0
  11. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.js +1065 -0
  12. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts +7 -0
  13. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts.map +1 -0
  14. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.js +71 -0
  15. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts +14 -0
  16. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts.map +1 -0
  17. package/apps/app-lifeops/src/components/DataSourcesStrip.js +36 -0
  18. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts +23 -0
  19. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts.map +1 -0
  20. package/apps/app-lifeops/src/components/EventEditorDrawer.js +514 -0
  21. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts +2 -0
  22. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts.map +1 -0
  23. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.js +10 -0
  24. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts +15 -0
  25. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts.map +1 -0
  26. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.js +515 -0
  27. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts +34 -0
  28. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts.map +1 -0
  29. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.js +175 -0
  30. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts +2 -0
  31. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts.map +1 -0
  32. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.js +99 -0
  33. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts +37 -0
  34. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts.map +1 -0
  35. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.js +88 -0
  36. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts +13 -0
  37. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts.map +1 -0
  38. package/apps/app-lifeops/src/components/LifeOpsInboxSection.js +490 -0
  39. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts +12 -0
  40. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts.map +1 -0
  41. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.js +92 -0
  42. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts +12 -0
  43. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts.map +1 -0
  44. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.js +160 -0
  45. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts +3 -0
  46. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts.map +1 -0
  47. package/apps/app-lifeops/src/components/LifeOpsMoneySection.js +373 -0
  48. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts +9 -0
  49. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts.map +1 -0
  50. package/apps/app-lifeops/src/components/LifeOpsNavRail.js +93 -0
  51. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts +4 -0
  52. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts.map +1 -0
  53. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.js +274 -0
  54. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts +7 -0
  55. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts.map +1 -0
  56. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.js +657 -0
  57. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts +42 -0
  58. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts.map +1 -0
  59. package/apps/app-lifeops/src/components/LifeOpsPageSections.js +166 -0
  60. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts +2 -0
  61. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts.map +1 -0
  62. package/apps/app-lifeops/src/components/LifeOpsPageView.js +566 -0
  63. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts +2 -0
  64. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts.map +1 -0
  65. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.js +749 -0
  66. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts +27 -0
  67. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts.map +1 -0
  68. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.js +106 -0
  69. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts +2 -0
  70. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts.map +1 -0
  71. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.js +373 -0
  72. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts +10 -0
  73. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts.map +1 -0
  74. package/apps/app-lifeops/src/components/LifeOpsSectionContent.js +30 -0
  75. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts +21 -0
  76. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts.map +1 -0
  77. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.js +30 -0
  78. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts +20 -0
  79. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts.map +1 -0
  80. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.js +597 -0
  81. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts +13 -0
  82. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts.map +1 -0
  83. package/apps/app-lifeops/src/components/LifeOpsSetupGate.js +134 -0
  84. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts +10 -0
  85. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts.map +1 -0
  86. package/apps/app-lifeops/src/components/LifeOpsSleepSection.js +425 -0
  87. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts +11 -0
  88. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts.map +1 -0
  89. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.js +49 -0
  90. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts +2 -0
  91. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts.map +1 -0
  92. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.js +1041 -0
  93. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts +7 -0
  94. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts.map +1 -0
  95. package/apps/app-lifeops/src/components/MessagingConnectorCards.js +643 -0
  96. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts +9 -0
  97. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts.map +1 -0
  98. package/apps/app-lifeops/src/components/MissingSourceCard.js +5 -0
  99. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts +2 -0
  100. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts.map +1 -0
  101. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.js +163 -0
  102. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts +8 -0
  103. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts.map +1 -0
  104. package/apps/app-lifeops/src/components/SleepInspectionPanel.js +59 -0
  105. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts +3 -0
  106. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
  107. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.js +75 -0
  108. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts +8 -0
  109. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts.map +1 -0
  110. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.js +48 -0
  111. package/apps/app-lifeops/src/components/lifeops-labels.d.ts +2 -0
  112. package/apps/app-lifeops/src/components/lifeops-labels.d.ts.map +1 -0
  113. package/apps/app-lifeops/src/components/lifeops-labels.js +5 -0
  114. package/apps/app-lifeops/src/events/index.d.ts +34 -0
  115. package/apps/app-lifeops/src/events/index.d.ts.map +1 -0
  116. package/apps/app-lifeops/src/events/index.js +23 -0
  117. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts +28 -0
  118. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts.map +1 -0
  119. package/apps/app-lifeops/src/hooks/useCalendarWeek.js +93 -0
  120. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts +14 -0
  121. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts.map +1 -0
  122. package/apps/app-lifeops/src/hooks/useDiscordConnector.js +126 -0
  123. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts +29 -0
  124. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
  125. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.js +481 -0
  126. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts +10 -0
  127. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts.map +1 -0
  128. package/apps/app-lifeops/src/hooks/useIMessageConnector.js +50 -0
  129. package/apps/app-lifeops/src/hooks/useInbox.d.ts +34 -0
  130. package/apps/app-lifeops/src/hooks/useInbox.d.ts.map +1 -0
  131. package/apps/app-lifeops/src/hooks/useInbox.js +98 -0
  132. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts +2 -0
  133. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
  134. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.js +383 -0
  135. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts +9 -0
  136. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts.map +1 -0
  137. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.js +83 -0
  138. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
  139. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
  140. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
  141. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts +18 -0
  142. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts.map +1 -0
  143. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.js +66 -0
  144. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts +14 -0
  145. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts.map +1 -0
  146. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.js +79 -0
  147. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts +18 -0
  148. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts.map +1 -0
  149. package/apps/app-lifeops/src/hooks/useLifeOpsSection.js +78 -0
  150. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts +14 -0
  151. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts.map +1 -0
  152. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.js +160 -0
  153. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts +16 -0
  154. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts.map +1 -0
  155. package/apps/app-lifeops/src/hooks/useSignalConnector.js +198 -0
  156. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts +21 -0
  157. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts.map +1 -0
  158. package/apps/app-lifeops/src/hooks/useTelegramConnector.js +177 -0
  159. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts +8 -0
  160. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts.map +1 -0
  161. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.js +58 -0
  162. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts +12 -0
  163. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts.map +1 -0
  164. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.js +152 -0
  165. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +1 -1
  166. package/apps/app-lifeops/src/lifeops/google-gmail.d.ts.map +1 -1
  167. package/apps/app-lifeops/src/lifeops/google-gmail.js +74 -26
  168. package/apps/app-lifeops/src/lifeops/google-managed-client.d.ts.map +1 -1
  169. package/apps/app-lifeops/src/lifeops/google-managed-client.js +4 -5
  170. package/apps/app-lifeops/src/lifeops/google-oauth.d.ts.map +1 -1
  171. package/apps/app-lifeops/src/lifeops/google-oauth.js +2 -2
  172. package/apps/app-lifeops/src/lifeops/owner-profile.d.ts.map +1 -1
  173. package/apps/app-lifeops/src/lifeops/owner-profile.js +1 -1
  174. package/apps/app-lifeops/src/lifeops/paypal-managed-client.d.ts.map +1 -1
  175. package/apps/app-lifeops/src/lifeops/paypal-managed-client.js +4 -5
  176. package/apps/app-lifeops/src/lifeops/plaid-managed-client.d.ts.map +1 -1
  177. package/apps/app-lifeops/src/lifeops/plaid-managed-client.js +4 -5
  178. package/apps/app-lifeops/src/lifeops/schedule-sync-client.js +2 -2
  179. package/apps/app-lifeops/src/lifeops/service-constants.d.ts +1 -0
  180. package/apps/app-lifeops/src/lifeops/service-constants.d.ts.map +1 -1
  181. package/apps/app-lifeops/src/lifeops/service-constants.js +1 -0
  182. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts +1 -1
  183. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts.map +1 -1
  184. package/apps/app-lifeops/src/lifeops/service-mixin-core.js +2 -1
  185. package/apps/app-lifeops/src/lifeops/service-mixin-imessage.js +1 -1
  186. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts +3 -1
  187. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts.map +1 -1
  188. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.js +42 -13
  189. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.d.ts.map +1 -1
  190. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.js +3 -2
  191. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.d.ts.map +1 -1
  192. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.js +1 -1
  193. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts.map +1 -1
  194. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.js +3 -3
  195. package/apps/app-lifeops/src/lifeops/service-normalize-connector.d.ts +1 -1
  196. package/apps/app-lifeops/src/lifeops/service-normalize-connector.d.ts.map +1 -1
  197. package/apps/app-lifeops/src/lifeops/service-normalize-connector.js +2 -2
  198. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts.map +1 -1
  199. package/apps/app-lifeops/src/lifeops/signal-auth.js +6 -3
  200. package/apps/app-lifeops/src/lifeops/telegram-auth.js +1 -1
  201. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts.map +1 -1
  202. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.js +31 -6
  203. package/apps/app-lifeops/src/lifeops/twilio.js +1 -1
  204. package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
  205. package/apps/app-lifeops/src/lifeops/x-poster.js +13 -3
  206. package/apps/app-lifeops/src/lifeops-route.d.ts +74 -0
  207. package/apps/app-lifeops/src/lifeops-route.d.ts.map +1 -0
  208. package/apps/app-lifeops/src/lifeops-route.js +204 -0
  209. package/apps/app-lifeops/src/platform/lifeops-github.d.ts +15 -0
  210. package/apps/app-lifeops/src/platform/lifeops-github.d.ts.map +1 -0
  211. package/apps/app-lifeops/src/platform/lifeops-github.js +135 -0
  212. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts +2 -2
  213. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts.map +1 -1
  214. package/apps/app-lifeops/src/routes/cloud-features-routes.js +5 -3
  215. package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
  216. package/apps/app-lifeops/src/routes/lifeops-routes.js +15 -3
  217. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
  218. package/apps/app-lifeops/src/routes/plugin.js +10 -1
  219. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts +1 -1
  220. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts.map +1 -1
  221. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.js +4 -2
  222. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts +1 -1
  223. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts.map +1 -1
  224. package/apps/app-lifeops/src/ui.d.ts +11 -0
  225. package/apps/app-lifeops/src/ui.d.ts.map +1 -0
  226. package/apps/app-lifeops/src/ui.js +9 -0
  227. package/apps/app-lifeops/src/utils/lifeops-url.d.ts +5 -0
  228. package/apps/app-lifeops/src/utils/lifeops-url.d.ts.map +1 -0
  229. package/apps/app-lifeops/src/utils/lifeops-url.js +35 -0
  230. package/apps/app-lifeops/src/website-blocker/access.d.ts.map +1 -1
  231. package/apps/app-lifeops/src/website-blocker/access.js +1 -1
  232. package/apps/app-steward/src/routes/steward-compat-routes.d.ts +1 -1
  233. package/apps/app-steward/src/routes/steward-compat-routes.d.ts.map +1 -1
  234. package/apps/app-steward/src/routes/steward-compat-routes.js +3 -1
  235. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts +1 -1
  236. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts.map +1 -1
  237. package/apps/app-steward/src/routes/wallet-browser-compat-routes.js +3 -1
  238. package/apps/app-steward/src/routes/wallet-bsc-core-routes.d.ts.map +1 -1
  239. package/apps/app-steward/src/routes/wallet-bsc-core-routes.js +2 -1
  240. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts +1 -1
  241. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts.map +1 -1
  242. package/apps/app-steward/src/routes/wallet-compat-routes.js +3 -1
  243. package/apps/app-steward/src/routes/wallet-core-routes.d.ts.map +1 -1
  244. package/apps/app-steward/src/routes/wallet-core-routes.js +2 -1
  245. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts +1 -1
  246. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts.map +1 -1
  247. package/apps/app-steward/src/routes/wallet-trade-compat-routes.js +3 -1
  248. package/apps/app-training/src/core/dataset-generator.d.ts +1 -1
  249. package/apps/app-training/src/core/dataset-generator.d.ts.map +1 -1
  250. package/apps/app-training/src/core/roleplay-executor.d.ts +1 -1
  251. package/apps/app-training/src/core/roleplay-executor.d.ts.map +1 -1
  252. package/apps/app-training/src/core/trajectory-task-datasets.d.ts +1 -1
  253. package/apps/app-training/src/core/trajectory-task-datasets.d.ts.map +1 -1
  254. package/apps/app-training/src/index.d.ts +1 -2
  255. package/apps/app-training/src/index.d.ts.map +1 -1
  256. package/apps/app-training/src/index.js +1 -2
  257. package/apps/app-training/src/routes/training-routes.d.ts +1 -1
  258. package/apps/app-training/src/routes/training-routes.d.ts.map +1 -1
  259. package/apps/app-training/src/routes/training-routes.js +1 -1
  260. package/apps/app-training/src/routes/trajectory-routes.d.ts +1 -1
  261. package/apps/app-training/src/routes/trajectory-routes.d.ts.map +1 -1
  262. package/apps/app-training/src/routes/trajectory-routes.js +3 -1
  263. package/apps/app-training/src/services/training-service-like.d.ts +1 -1
  264. package/apps/app-training/src/services/training-service-like.d.ts.map +1 -1
  265. package/apps/app-training/src/services/training-service.d.ts +1 -1
  266. package/apps/app-training/src/services/training-service.d.ts.map +1 -1
  267. package/package.json +1 -1
  268. package/packages/agent/src/api/provider-switch-config.js +1 -1
  269. package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -1
  270. package/packages/agent/src/api/server-helpers-auth.js +5 -4
  271. package/packages/agent/src/providers/media-provider.d.ts +1 -1
  272. package/packages/agent/src/providers/media-provider.d.ts.map +1 -1
  273. package/packages/app-core/src/App.d.ts.map +1 -1
  274. package/packages/app-core/src/App.js +20 -12
  275. package/packages/app-core/src/api/auth.d.ts.map +1 -1
  276. package/packages/app-core/src/api/auth.js +5 -5
  277. package/packages/app-core/src/api/client-types-experience.d.ts +7 -0
  278. package/packages/app-core/src/api/client-types-experience.d.ts.map +1 -1
  279. package/packages/app-core/src/components/apps/helpers.d.ts +1 -1
  280. package/packages/app-core/src/components/apps/helpers.d.ts.map +1 -1
  281. package/packages/app-core/src/components/apps/helpers.js +1 -0
  282. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts +11 -0
  283. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts.map +1 -1
  284. package/packages/app-core/src/components/apps/internal-tool-apps.js +31 -0
  285. package/packages/app-core/src/components/apps/launch-history.d.ts +16 -0
  286. package/packages/app-core/src/components/apps/launch-history.d.ts.map +1 -0
  287. package/packages/app-core/src/components/apps/launch-history.js +77 -0
  288. package/packages/app-core/src/components/apps/per-app-config.d.ts +19 -0
  289. package/packages/app-core/src/components/apps/per-app-config.d.ts.map +1 -0
  290. package/packages/app-core/src/components/apps/per-app-config.js +99 -0
  291. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts +14 -0
  292. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts.map +1 -0
  293. package/packages/app-core/src/components/apps/useRegistryCatalog.js +52 -0
  294. package/packages/app-core/src/components/auth/LoginView.d.ts +1 -19
  295. package/packages/app-core/src/components/auth/LoginView.d.ts.map +1 -1
  296. package/packages/app-core/src/components/auth/LoginView.js +4 -99
  297. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.d.ts.map +1 -1
  298. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.js +14 -2
  299. package/packages/app-core/src/components/character/character-hub-helpers.d.ts.map +1 -1
  300. package/packages/app-core/src/components/character/character-hub-helpers.js +7 -0
  301. package/packages/app-core/src/components/character/character-hub-types.d.ts +7 -0
  302. package/packages/app-core/src/components/character/character-hub-types.d.ts.map +1 -1
  303. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts.map +1 -1
  304. package/packages/app-core/src/components/onboarding/BootstrapStep.js +3 -2
  305. package/packages/app-core/src/components/pages/AppDetailsView.d.ts +36 -0
  306. package/packages/app-core/src/components/pages/AppDetailsView.d.ts.map +1 -0
  307. package/packages/app-core/src/components/pages/AppDetailsView.js +289 -0
  308. package/packages/app-core/src/components/pages/AppsView.d.ts.map +1 -1
  309. package/packages/app-core/src/components/pages/AppsView.js +134 -42
  310. package/packages/app-core/src/components/shell/StartupShell.d.ts.map +1 -1
  311. package/packages/app-core/src/components/shell/StartupShell.js +2 -5
  312. package/packages/app-core/src/i18n/locales/en.json +256 -205
  313. package/packages/app-core/src/i18n/locales/es.json +256 -205
  314. package/packages/app-core/src/i18n/locales/ko.json +256 -205
  315. package/packages/app-core/src/i18n/locales/pt.json +256 -205
  316. package/packages/app-core/src/i18n/locales/tl.json +256 -205
  317. package/packages/app-core/src/i18n/locales/vi.json +256 -205
  318. package/packages/app-core/src/i18n/locales/zh-CN.json +256 -205
  319. package/packages/app-core/src/navigation/index.d.ts.map +1 -1
  320. package/packages/app-core/src/navigation/index.js +6 -0
  321. package/packages/app-core/src/shell/AppWindowRenderer.d.ts +17 -0
  322. package/packages/app-core/src/shell/AppWindowRenderer.d.ts.map +1 -0
  323. package/packages/app-core/src/shell/AppWindowRenderer.js +337 -0
  324. package/packages/app-core/src/shell/DetachedShellRoot.js +4 -1
  325. package/packages/app-core/src/shell/index.d.ts +1 -0
  326. package/packages/app-core/src/shell/index.d.ts.map +1 -1
  327. package/packages/app-core/src/shell/index.js +1 -0
  328. package/packages/app-core/src/state/startup-coordinator.d.ts.map +1 -1
  329. package/packages/app-core/src/state/startup-coordinator.js +0 -3
  330. package/packages/app-core/src/state/startup-phase-poll.d.ts.map +1 -1
  331. package/packages/app-core/src/state/startup-phase-poll.js +2 -4
  332. package/packages/app-core/src/state/usePluginsSkillsState.d.ts +6 -6
  333. package/packages/native-plugins/mobile-signals/src/definitions.d.ts +162 -0
  334. package/packages/native-plugins/mobile-signals/src/definitions.d.ts.map +1 -0
  335. package/packages/native-plugins/mobile-signals/src/definitions.js +1 -0
  336. package/packages/native-plugins/mobile-signals/src/index.d.ts +4 -0
  337. package/packages/native-plugins/mobile-signals/src/index.d.ts.map +1 -0
  338. package/packages/native-plugins/mobile-signals/src/index.js +6 -0
  339. package/packages/native-plugins/mobile-signals/src/web.d.ts +29 -0
  340. package/packages/native-plugins/mobile-signals/src/web.d.ts.map +1 -0
  341. package/packages/native-plugins/mobile-signals/src/web.js +269 -0
  342. package/packages/shared/src/app-hero-art.d.ts.map +1 -1
  343. package/packages/shared/src/app-hero-art.js +13 -0
  344. package/packages/shared/src/contracts/lifeops.d.ts +10 -0
  345. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  346. package/packages/shared/src/contracts/lifeops.js +5 -0
  347. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.d.ts.map +1 -1
  348. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.js +46 -4
  349. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.d.ts.map +1 -1
  350. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.js +34 -124
  351. package/packages/typescript/src/features/advanced-capabilities/experience/service.d.ts.map +1 -1
  352. package/packages/typescript/src/features/advanced-capabilities/experience/service.js +56 -0
  353. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts +7 -0
  354. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts.map +1 -1
  355. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts +7 -0
  356. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts.map +1 -0
  357. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.js +123 -0
  358. package/apps/app-training/src/ui/FineTuningView.d.ts +0 -5
  359. package/apps/app-training/src/ui/FineTuningView.d.ts.map +0 -1
  360. package/apps/app-training/src/ui/FineTuningView.js +0 -388
  361. package/apps/app-training/src/ui/fine-tuning-panels.d.ts +0 -111
  362. package/apps/app-training/src/ui/fine-tuning-panels.d.ts.map +0 -1
  363. package/apps/app-training/src/ui/fine-tuning-panels.js +0 -130
  364. package/apps/app-training/src/ui/index.d.ts +0 -3
  365. package/apps/app-training/src/ui/index.d.ts.map +0 -1
  366. package/apps/app-training/src/ui/index.js +0 -2
  367. package/packages/app-core/src/api/trusted-local-request.d.ts +0 -4
  368. package/packages/app-core/src/api/trusted-local-request.d.ts.map +0 -1
  369. package/packages/app-core/src/api/trusted-local-request.js +0 -176
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Per-app config — launch mode, always-on-top default, and free-form
3
+ * app-declared settings. NOT widget visibility (lives in widgets/visibility.ts).
4
+ *
5
+ * Persisted to localStorage under `milady:apps:<slug>`. Subscribers receive
6
+ * change notifications via the `storage` event so multiple windows stay in
7
+ * sync.
8
+ */
9
+ export type AppLaunchMode = "window" | "inline";
10
+ export interface PerAppConfig {
11
+ launchMode: AppLaunchMode;
12
+ alwaysOnTop: boolean;
13
+ settings: Record<string, unknown>;
14
+ }
15
+ export declare function loadPerAppConfig(slug: string): PerAppConfig;
16
+ export declare function savePerAppConfig(slug: string, config: PerAppConfig): void;
17
+ export declare function subscribePerAppConfig(slug: string, listener: (config: PerAppConfig) => void): () => void;
18
+ export declare function getDefaultPerAppConfig(): PerAppConfig;
19
+ //# sourceMappingURL=per-app-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-app-config.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/apps/per-app-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAqDD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAO3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAczE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GACvC,MAAM,IAAI,CAWZ;AAED,wBAAgB,sBAAsB,IAAI,YAAY,CAErD"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Per-app config — launch mode, always-on-top default, and free-form
3
+ * app-declared settings. NOT widget visibility (lives in widgets/visibility.ts).
4
+ *
5
+ * Persisted to localStorage under `milady:apps:<slug>`. Subscribers receive
6
+ * change notifications via the `storage` event so multiple windows stay in
7
+ * sync.
8
+ */
9
+ const DEFAULT_CONFIG = {
10
+ launchMode: "window",
11
+ alwaysOnTop: false,
12
+ settings: {},
13
+ };
14
+ const KEY_PREFIX = "milady:apps:";
15
+ function storageKey(slug) {
16
+ return `${KEY_PREFIX}${slug}`;
17
+ }
18
+ function isLaunchMode(value) {
19
+ return value === "window" || value === "inline";
20
+ }
21
+ function sanitizeSettings(value) {
22
+ if (!value || typeof value !== "object" || Array.isArray(value))
23
+ return {};
24
+ const next = {};
25
+ for (const [key, raw] of Object.entries(value)) {
26
+ if (typeof key === "string" && key.length > 0) {
27
+ next[key] = raw;
28
+ }
29
+ }
30
+ return next;
31
+ }
32
+ function parseConfig(raw) {
33
+ if (!raw)
34
+ return { ...DEFAULT_CONFIG, settings: {} };
35
+ let parsed;
36
+ try {
37
+ parsed = JSON.parse(raw);
38
+ }
39
+ catch {
40
+ return { ...DEFAULT_CONFIG, settings: {} };
41
+ }
42
+ if (!parsed || typeof parsed !== "object") {
43
+ return { ...DEFAULT_CONFIG, settings: {} };
44
+ }
45
+ const candidate = parsed;
46
+ return {
47
+ launchMode: isLaunchMode(candidate.launchMode)
48
+ ? candidate.launchMode
49
+ : DEFAULT_CONFIG.launchMode,
50
+ alwaysOnTop: typeof candidate.alwaysOnTop === "boolean"
51
+ ? candidate.alwaysOnTop
52
+ : DEFAULT_CONFIG.alwaysOnTop,
53
+ settings: sanitizeSettings(candidate.settings),
54
+ };
55
+ }
56
+ export function loadPerAppConfig(slug) {
57
+ if (typeof window === "undefined")
58
+ return { ...DEFAULT_CONFIG, settings: {} };
59
+ try {
60
+ return parseConfig(window.localStorage.getItem(storageKey(slug)));
61
+ }
62
+ catch {
63
+ return { ...DEFAULT_CONFIG, settings: {} };
64
+ }
65
+ }
66
+ export function savePerAppConfig(slug, config) {
67
+ if (typeof window === "undefined")
68
+ return;
69
+ try {
70
+ const sanitized = {
71
+ launchMode: isLaunchMode(config.launchMode)
72
+ ? config.launchMode
73
+ : DEFAULT_CONFIG.launchMode,
74
+ alwaysOnTop: Boolean(config.alwaysOnTop),
75
+ settings: sanitizeSettings(config.settings),
76
+ };
77
+ window.localStorage.setItem(storageKey(slug), JSON.stringify(sanitized));
78
+ }
79
+ catch {
80
+ /* ignore — sandboxed storage */
81
+ }
82
+ }
83
+ export function subscribePerAppConfig(slug, listener) {
84
+ if (typeof window === "undefined")
85
+ return () => { };
86
+ const key = storageKey(slug);
87
+ const handler = (event) => {
88
+ if (event.key !== key)
89
+ return;
90
+ listener(parseConfig(event.newValue));
91
+ };
92
+ window.addEventListener("storage", handler);
93
+ return () => {
94
+ window.removeEventListener("storage", handler);
95
+ };
96
+ }
97
+ export function getDefaultPerAppConfig() {
98
+ return { ...DEFAULT_CONFIG, settings: {} };
99
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared catalog fetch for views that need to resolve a slug against the
3
+ * union of `client.listApps()` (installed) and `client.listCatalogApps()`
4
+ * (registry). A module-level promise coalesces concurrent callers so two
5
+ * views mounted for the same slug only hit the API once.
6
+ */
7
+ import { type RegistryAppInfo } from "../../api";
8
+ interface RegistryCatalogState {
9
+ catalog: RegistryAppInfo[] | null;
10
+ error: string | null;
11
+ }
12
+ export declare function useRegistryCatalog(): RegistryCatalogState;
13
+ export {};
14
+ //# sourceMappingURL=useRegistryCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRegistryCatalog.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/apps/useRegistryCatalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAU,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEzD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAyBD,wBAAgB,kBAAkB,IAAI,oBAAoB,CA2BzD"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shared catalog fetch for views that need to resolve a slug against the
3
+ * union of `client.listApps()` (installed) and `client.listCatalogApps()`
4
+ * (registry). A module-level promise coalesces concurrent callers so two
5
+ * views mounted for the same slug only hit the API once.
6
+ */
7
+ import { useEffect, useState } from "react";
8
+ import { client } from "../../api";
9
+ let inflight = null;
10
+ function fetchRegistryCatalog() {
11
+ if (inflight)
12
+ return inflight;
13
+ inflight = (async () => {
14
+ const [serverApps, catalogApps] = await Promise.all([
15
+ client.listApps().catch(() => []),
16
+ client.listCatalogApps().catch(() => []),
17
+ ]);
18
+ return [...catalogApps, ...serverApps].filter((entry, index, items) => !items
19
+ .slice(index + 1)
20
+ .some((candidate) => candidate.name === entry.name));
21
+ })().finally(() => {
22
+ // Allow next mount cycle to refetch — keeps stale data out without
23
+ // spamming the API for siblings mounting in the same tick.
24
+ inflight = null;
25
+ });
26
+ return inflight;
27
+ }
28
+ export function useRegistryCatalog() {
29
+ const [state, setState] = useState({
30
+ catalog: null,
31
+ error: null,
32
+ });
33
+ useEffect(() => {
34
+ let cancelled = false;
35
+ fetchRegistryCatalog().then((catalog) => {
36
+ if (cancelled)
37
+ return;
38
+ setState({ catalog, error: null });
39
+ }, (err) => {
40
+ if (cancelled)
41
+ return;
42
+ setState({
43
+ catalog: null,
44
+ error: err instanceof Error ? err.message : String(err),
45
+ });
46
+ });
47
+ return () => {
48
+ cancelled = true;
49
+ };
50
+ }, []);
51
+ return state;
52
+ }
@@ -5,12 +5,6 @@ export interface LoginViewProps {
5
5
  * main dashboard.
6
6
  */
7
7
  onLoginSuccess: () => void;
8
- /** Whether Eliza Cloud SSO is available. */
9
- cloudEnabled?: boolean;
10
- /** Connector bindings available for DM-link login. */
11
- connectorBindings?: ConnectorBinding[];
12
- /** Optional pairing props forwarded to the pairing tab. */
13
- pairing?: PairingTabProps;
14
8
  /** Injected login function (tests). */
15
9
  loginFn?: (params: {
16
10
  displayName: string;
@@ -19,17 +13,5 @@ export interface LoginViewProps {
19
13
  }) => Promise<AuthLoginResult>;
20
14
  reason?: "remote_auth_required" | "remote_password_not_configured";
21
15
  }
22
- export interface ConnectorBinding {
23
- connector: "discord" | "telegram" | "wechat" | "matrix";
24
- displayHandle: string;
25
- }
26
- export interface PairingTabProps {
27
- pairingEnabled: boolean;
28
- pairingCodeInput: string;
29
- pairingBusy: boolean;
30
- pairingError: string | null;
31
- onCodeChange: (value: string) => void;
32
- onSubmit: (code: string) => void;
33
- }
34
- export declare function LoginView({ onLoginSuccess, cloudEnabled, connectorBindings, pairing, loginFn, reason, }: LoginViewProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function LoginView({ onLoginSuccess, loginFn, reason, }: LoginViewProps): import("react/jsx-runtime").JSX.Element;
35
17
  //# sourceMappingURL=LoginView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginView.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/auth/LoginView.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,uBAAuB,CAAC;AAWhF,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,sBAAsB,GAAG,gCAAgC,CAAC;CACpE;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAmUD,wBAAgB,SAAS,CAAC,EACxB,cAAc,EACd,YAAoB,EACpB,iBAAsB,EACtB,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE,cAAc,2CA6GhB"}
1
+ {"version":3,"file":"LoginView.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/auth/LoginView.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,uBAAuB,CAAC;AAWhF,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,sBAAsB,GAAG,gCAAgC,CAAC;CACpE;AAuJD,wBAAgB,SAAS,CAAC,EACxB,cAAc,EACd,OAAO,EACP,MAAM,GACP,EAAE,cAAc,2CAoDhB"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, Card, CardContent, CardHeader, CardTitle, cn, Input, Label, Tabs, TabsContent, TabsList, TabsTrigger, } from "@elizaos/ui";
3
- import { useCallback, useId, useState, } from "react";
2
+ import { Button, Card, CardContent, CardHeader, CardTitle, cn, Input, Label, } from "@elizaos/ui";
3
+ import { useCallback, useId, useState } from "react";
4
4
  import { authLoginPassword } from "../../api/auth-client";
5
5
  import { OnboardingStepDivider, onboardingBodyTextShadowStyle, onboardingDescriptionClass, onboardingEyebrowClass, onboardingTitleClass, } from "../onboarding/onboarding-step-chrome";
6
6
  function PasswordTab({ onLoginSuccess, loginFn, }) {
@@ -51,107 +51,12 @@ function PasswordTab({ onLoginSuccess, loginFn, }) {
51
51
  setSubmitState({ phase: "idle" });
52
52
  }, disabled: isSubmitting, "aria-required": "true" })] }), _jsxs("label", { className: "flex cursor-pointer items-center gap-2 text-sm text-muted-foreground select-none", children: [_jsx("input", { type: "checkbox", checked: rememberDevice, onChange: (e) => setRememberDevice(e.target.checked), disabled: isSubmitting, className: "h-4 w-4 rounded border-border accent-primary" }), "Remember this device for 30 days"] })] }), submitState.phase === "error" && (_jsx("p", { role: "alert", className: "rounded-lg border border-[color:color-mix(in_srgb,var(--danger)_38%,transparent)] bg-[color:color-mix(in_srgb,var(--danger)_12%,transparent)] px-4 py-3 text-sm text-danger", children: submitState.message })), _jsx(Button, { type: "submit", disabled: isSubmitting || !displayName.trim() || !password, className: "w-full", children: isSubmitting ? "Signing in…" : "Sign in" })] }));
53
53
  }
54
- // ── SSO tab ───────────────────────────────────────────────────────────────────
55
- function SsoTab() {
56
- return (_jsxs("div", { className: "flex flex-col items-center gap-4 py-2", children: [_jsx("p", { className: "text-sm text-muted-foreground text-center leading-relaxed", children: "Sign in with your Eliza Cloud account. This method requires the instance to have an active Eliza Cloud connection." }), _jsx(Button, { asChild: true, className: "w-full", variant: "outline", children: _jsx("a", { href: "/api/auth/login/sso/start?returnTo=/", children: "Sign in with Eliza Cloud" }) })] }));
57
- }
58
- // ── Connector tab ─────────────────────────────────────────────────────────────
59
- function ConnectorTab({ bindings }) {
60
- return (_jsxs("div", { className: "flex flex-col gap-4 py-2", children: [_jsx("p", { className: "text-sm text-muted-foreground leading-relaxed", children: "Choose a connector \u2014 we\u2019ll send you a one-time login link." }), _jsx("div", { className: "flex flex-col gap-2", children: bindings.map((b) => (_jsx(ConnectorLoginButton, { binding: b }, `${b.connector}:${b.displayHandle}`))) })] }));
61
- }
62
- const DM_LINK_UNAVAILABLE_MESSAGE = "Login links are unavailable on this server. Use another sign-in method or contact the instance owner.";
63
- function ConnectorLoginButton({ binding }) {
64
- const [state, setState] = useState({ phase: "idle" });
65
- const handleClick = useCallback(async () => {
66
- setState({ phase: "sending" });
67
- try {
68
- const res = await fetch("/api/auth/login/owner/dm-link/request", {
69
- method: "POST",
70
- credentials: "include",
71
- headers: { "Content-Type": "application/json" },
72
- body: JSON.stringify({
73
- connector: binding.connector,
74
- externalId: binding.displayHandle,
75
- }),
76
- });
77
- if (res.status === 404) {
78
- setState({
79
- phase: "error",
80
- message: DM_LINK_UNAVAILABLE_MESSAGE,
81
- });
82
- return;
83
- }
84
- if (!res.ok) {
85
- setState({
86
- phase: "error",
87
- message: `Request failed (${res.status}). Try again.`,
88
- });
89
- return;
90
- }
91
- setState({ phase: "sent", connector: binding.connector });
92
- }
93
- catch (err) {
94
- setState({
95
- phase: "error",
96
- message: err instanceof Error ? err.message : "Network error.",
97
- });
98
- }
99
- }, [binding]);
100
- const label = `${binding.connector[0].toUpperCase()}${binding.connector.slice(1)} — ${binding.displayHandle}`;
101
- if (state.phase === "sent") {
102
- return (_jsxs("p", { className: "rounded-lg border border-[var(--ok-muted)] bg-[var(--ok-subtle)] px-4 py-3 text-sm text-ok", children: ["Login link sent via ", state.connector, ". Click it to sign in."] }));
103
- }
104
- return (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Button, { variant: "outline", disabled: state.phase === "sending", onClick: handleClick, className: "w-full justify-start", children: state.phase === "sending" ? "Sending…" : `Send link via ${label}` }), state.phase === "error" && (_jsx("p", { className: "text-xs text-danger", children: state.message }))] }));
105
- }
106
- // ── Pairing tab ───────────────────────────────────────────────────────────────
107
- function PairingTab({ pairing }) {
108
- const pairingCodeId = useId().replace(/:/g, "");
109
- const code = pairing.pairingCodeInput.trim();
110
- return (_jsxs("form", { onSubmit: (e) => {
111
- e.preventDefault();
112
- if (code)
113
- pairing.onSubmit(code);
114
- }, className: "flex flex-col gap-4", children: [_jsx("p", { className: "text-sm text-muted-foreground leading-relaxed", children: "Enter the pairing code shown in your CLI or desktop app." }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: pairingCodeId, className: "text-xs uppercase tracking-wide text-muted-foreground", children: "Pairing code" }), _jsx(Input, { id: pairingCodeId, type: "text", placeholder: "xxxx-xxxx-xxxx", value: pairing.pairingCodeInput, onChange: (e) => pairing.onCodeChange(e.target.value), disabled: pairing.pairingBusy, autoComplete: "off", spellCheck: false })] }), pairing.pairingError && (_jsx("p", { role: "alert", className: "text-sm text-danger", children: pairing.pairingError })), _jsx(Button, { type: "submit", disabled: pairing.pairingBusy || !code, className: "w-full", children: pairing.pairingBusy ? "Pairing…" : "Submit code" })] }));
115
- }
116
54
  // ── Root component ────────────────────────────────────────────────────────────
117
55
  const SCREEN_SHELL_CLASS = "relative flex min-h-screen w-full items-center justify-center overflow-hidden bg-bg px-4 py-6 font-body text-txt sm:px-6";
118
56
  const SCREEN_CARD_CLASS = "relative z-10 w-full max-w-[520px] overflow-hidden border border-border/60 bg-card/95 shadow-[0_30px_120px_rgba(0,0,0,0.35)] backdrop-blur-xl";
119
- export function LoginView({ onLoginSuccess, cloudEnabled = false, connectorBindings = [], pairing, loginFn, reason, }) {
57
+ export function LoginView({ onLoginSuccess, loginFn, reason, }) {
120
58
  const remotePasswordMissing = reason === "remote_password_not_configured";
121
- const visibleMethods = [
122
- {
123
- value: "password",
124
- label: "Password",
125
- content: (_jsx(PasswordTab, { onLoginSuccess: onLoginSuccess, loginFn: loginFn })),
126
- },
127
- ];
128
- if (cloudEnabled) {
129
- visibleMethods.push({
130
- value: "sso",
131
- label: "Cloud",
132
- content: _jsx(SsoTab, {}),
133
- });
134
- }
135
- if (connectorBindings.length > 0) {
136
- visibleMethods.push({
137
- value: "connector",
138
- label: "Connector",
139
- content: _jsx(ConnectorTab, { bindings: connectorBindings }),
140
- });
141
- }
142
- if (pairing?.pairingEnabled) {
143
- visibleMethods.push({
144
- value: "pairing",
145
- label: "Pairing",
146
- content: _jsx(PairingTab, { pairing: pairing }),
147
- });
148
- }
149
- const loginDescription = visibleMethods.length > 1
150
- ? "Choose your login method below."
151
- : "Sign in with your password.";
152
59
  return (_jsxs("div", { className: SCREEN_SHELL_CLASS, children: [_jsx("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: _jsx("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top,rgba(255,255,255,0.08),transparent_40%),linear-gradient(180deg,rgba(11,14,20,0.24),rgba(6,7,8,0.62))]" }) }), _jsxs(Card, { className: SCREEN_CARD_CLASS, children: [_jsx(CardHeader, { className: "pb-2 pt-6 px-6", children: _jsxs("div", { className: "mb-1", children: [_jsx("p", { className: onboardingEyebrowClass, style: onboardingBodyTextShadowStyle, children: "Milady" }), _jsx(OnboardingStepDivider, {}), _jsx(CardTitle, { className: cn(onboardingTitleClass, "mt-2"), style: { textShadow: "var(--onboarding-text-shadow-strong)" }, children: remotePasswordMissing ? "Remote access blocked" : "Sign in" }), _jsx("p", { className: cn(onboardingDescriptionClass, "mt-2"), style: onboardingBodyTextShadowStyle, children: remotePasswordMissing
153
60
  ? "A remote password is required before this instance can accept browser logins from another machine."
154
- : loginDescription })] }) }), _jsx(CardContent, { className: "px-6 pb-6", children: remotePasswordMissing ? (_jsx("div", { role: "alert", className: "rounded-lg border border-border/60 bg-bg/50 px-4 py-3 text-sm leading-6 text-muted-foreground", children: "Open Milady on the host machine via localhost, then set a remote password in Settings." })) : (_jsxs(Tabs, { defaultValue: "password", children: [_jsx(TabsList, { className: "mb-5 grid w-full", style: {
155
- gridTemplateColumns: `repeat(${visibleMethods.length}, minmax(0, 1fr))`,
156
- }, children: visibleMethods.map((method) => (_jsx(TabsTrigger, { value: method.value, children: method.label }, method.value))) }), visibleMethods.map((method) => (_jsx(TabsContent, { value: method.value, children: method.content }, method.value)))] })) })] })] }));
61
+ : "Sign in with your password." })] }) }), _jsx(CardContent, { className: "px-6 pb-6", children: remotePasswordMissing ? (_jsx("div", { role: "alert", className: "rounded-lg border border-border/60 bg-bg/50 px-4 py-3 text-sm leading-6 text-muted-foreground", children: "Open Milady on the host machine via localhost, then set a remote password in Settings." })) : (_jsx(PasswordTab, { onLoginSuccess: onLoginSuccess, loginFn: loginFn })) })] })] }));
157
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterExperienceWorkspace.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/character/CharacterExperienceWorkspace.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAqK/B,wBAAgB,4BAA4B,CAAC,EAC3C,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,EAAE;IACD,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CACjB,UAAU,EAAE,yBAAyB,EACrC,KAAK,EAAE,wBAAwB,KAC5B,IAAI,CAAC;IACV,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACrE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,2CAmqBA"}
1
+ {"version":3,"file":"CharacterExperienceWorkspace.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/character/CharacterExperienceWorkspace.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AA4O/B,wBAAgB,4BAA4B,CAAC,EAC3C,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,EAAE;IACD,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CACjB,UAAU,EAAE,yBAAyB,EACrC,KAAK,EAAE,wBAAwB,KAC5B,IAAI,CAAC;IACV,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACrE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,2CA4qBA"}
@@ -68,6 +68,11 @@ function compactText(...values) {
68
68
  function uniqueSorted(values) {
69
69
  return Array.from(new Set(values.map((value) => value?.trim()).filter(Boolean))).sort((left, right) => left.localeCompare(right));
70
70
  }
71
+ function shortId(value) {
72
+ if (!value)
73
+ return "Not recorded";
74
+ return value.length > 12 ? `${value.slice(0, 12)}...` : value;
75
+ }
71
76
  function selectedOrFirst(experiences, selectedExperienceId) {
72
77
  return (experiences.find((experience) => experience.id === selectedExperienceId) ??
73
78
  experiences[0] ??
@@ -83,6 +88,13 @@ function ScoreBar({ label, value, explanation, }) {
83
88
  function EvidencePanel({ title, body, }) {
84
89
  return (_jsxs("div", { className: "min-w-0 rounded-xl border border-border/30 bg-bg-muted/15 p-3", children: [_jsx("div", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: title }), _jsx("p", { className: "mt-2 whitespace-pre-wrap text-sm leading-relaxed text-muted-strong", children: body || "Not recorded." })] }));
85
90
  }
91
+ function ProvenancePanel({ experience, }) {
92
+ const sourceMessageIds = experience.sourceMessageIds ?? [];
93
+ const trajectoryTarget = experience.sourceTrajectoryId ?? experience.sourceTrajectoryStepId ?? null;
94
+ return (_jsxs("div", { className: "rounded-xl border border-border/30 bg-bg-muted/10 p-3", children: [_jsx("div", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: "Evidence source" }), _jsxs("div", { className: "mt-3 grid gap-3 text-sm md:grid-cols-2 xl:grid-cols-4", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs font-semibold text-muted", children: "Method" }), _jsx("div", { className: "mt-1 font-mono text-xs text-muted-strong", children: experience.extractionMethod ?? "unknown" })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs font-semibold text-muted", children: "Room" }), _jsx("div", { className: "mt-1 font-mono text-xs text-muted-strong", children: shortId(experience.sourceRoomId) })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs font-semibold text-muted", children: "Trigger message" }), _jsx("div", { className: "mt-1 font-mono text-xs text-muted-strong", children: shortId(experience.sourceTriggerMessageId) })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs font-semibold text-muted", children: "Evidence messages" }), _jsx("div", { className: "mt-1 font-mono text-xs text-muted-strong", children: sourceMessageIds.length > 0
95
+ ? `${sourceMessageIds.length} captured`
96
+ : "Not recorded" })] })] }), trajectoryTarget ? (_jsxs("div", { className: "mt-3 text-xs text-muted", children: ["Trajectory:", " ", _jsx("a", { href: `/trajectories/${trajectoryTarget}`, className: "font-mono text-muted-strong underline", children: shortId(trajectoryTarget) })] })) : null, experience.extractionReason ? (_jsx("p", { className: "mt-3 whitespace-pre-wrap text-sm leading-relaxed text-muted-strong", children: experience.extractionReason })) : null] }));
97
+ }
86
98
  export function CharacterExperienceWorkspace({ experiences, selectedExperienceId, onSelectExperience, onSaveExperience, onDeleteExperience, savingExperienceId, deletingExperienceId, }) {
87
99
  const { t } = useTranslation();
88
100
  const [searchQuery, setSearchQuery] = useState("");
@@ -142,7 +154,7 @@ export function CharacterExperienceWorkspace({ experiences, selectedExperienceId
142
154
  }
143
155
  if (!query)
144
156
  return true;
145
- const haystack = compactText(experience.type, experience.outcome, experience.domain, experience.context, experience.action, experience.result, experience.learning, experience.previousBelief, experience.correctedBelief, experience.supersedes, ...(experience.relatedExperienceIds ?? []), ...experience.tags);
157
+ const haystack = compactText(experience.type, experience.outcome, experience.domain, experience.context, experience.action, experience.result, experience.learning, experience.previousBelief, experience.correctedBelief, experience.supersedes, experience.sourceRoomId, experience.sourceTriggerMessageId, experience.sourceTrajectoryId, experience.sourceTrajectoryStepId, experience.extractionMethod, experience.extractionReason, ...(experience.relatedExperienceIds ?? []), ...(experience.sourceMessageIds ?? []), ...experience.tags);
146
158
  return haystack.includes(query);
147
159
  });
148
160
  return [...filtered].sort((left, right) => {
@@ -208,7 +220,7 @@ export function CharacterExperienceWorkspace({ experiences, selectedExperienceId
208
220
  ? `: ${supersededExperience.learning || supersededExperience.result}`
209
221
  : ""] })) : null, selectedRelatedExperiences.map((experience) => (_jsxs("button", { type: "button", className: "block w-full rounded-lg border border-border/30 px-3 py-2 text-left hover:bg-bg-muted/20", onClick: () => onSelectExperience(experience.id), children: [_jsx("span", { className: "font-mono text-xs text-muted", children: experience.id }), _jsx("span", { className: "ml-2", children: experience.learning ||
210
222
  experience.result ||
211
- experience.context })] }, experience.id)))] })] })) : null, _jsxs("div", { className: "rounded-xl border border-border/30 bg-bg-muted/10 p-3", children: [_jsx("div", { className: "mb-3 flex items-center justify-between gap-3", children: _jsxs("div", { children: [_jsx("div", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: "Review edit" }), _jsx("p", { className: "text-xs text-muted", children: "Update the takeaway, ranking, and tags after checking evidence." })] }) }), _jsxs("label", { htmlFor: `experience-learning-${visibleSelectedExperience.id}`, className: "flex min-w-0 flex-col gap-2", children: [_jsx("span", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: "Learning" }), _jsx(Textarea, { id: `experience-learning-${visibleSelectedExperience.id}`, value: draft.learning, rows: 6, onChange: (event) => setDraft((current) => ({
223
+ experience.context })] }, experience.id)))] })] })) : null, _jsx(ProvenancePanel, { experience: visibleSelectedExperience }), _jsxs("div", { className: "rounded-xl border border-border/30 bg-bg-muted/10 p-3", children: [_jsx("div", { className: "mb-3 flex items-center justify-between gap-3", children: _jsxs("div", { children: [_jsx("div", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: "Review edit" }), _jsx("p", { className: "text-xs text-muted", children: "Update the takeaway, ranking, and tags after checking evidence." })] }) }), _jsxs("label", { htmlFor: `experience-learning-${visibleSelectedExperience.id}`, className: "flex min-w-0 flex-col gap-2", children: [_jsx("span", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: "Learning" }), _jsx(Textarea, { id: `experience-learning-${visibleSelectedExperience.id}`, value: draft.learning, rows: 6, onChange: (event) => setDraft((current) => ({
212
224
  ...current,
213
225
  learning: event.target.value,
214
226
  })), className: "min-h-[8rem] resize-y rounded-xl border-border/40 bg-bg-muted/15 font-mono text-sm leading-relaxed" })] }), _jsxs("div", { className: "mt-4 grid gap-4 md:grid-cols-3", children: [_jsxs("label", { htmlFor: `experience-importance-${visibleSelectedExperience.id}`, className: "flex min-w-0 flex-col gap-2", children: [_jsx("span", { className: "text-[0.65rem] font-semibold uppercase tracking-[0.08em] text-muted", children: "Importance" }), _jsx(Input, { id: `experience-importance-${visibleSelectedExperience.id}`, type: "number", min: "0", max: "1", step: "0.05", value: String(draft.importance), onChange: (event) => setDraft((current) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"character-hub-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/character/character-hub-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,+BAA+B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,sBAAsB,4FAOzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,mBAAmB,GAC3B,MAAM,CAiBR;AASD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,qBAAqB,GAC3B,+BAA+B,CA8BjC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,gBAAgB,GAC3B,yBAAyB,CAoB3B;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD,GAAG,wBAAwB,EAAE,CA8D7B"}
1
+ {"version":3,"file":"character-hub-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/character/character-hub-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,+BAA+B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,sBAAsB,4FAOzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,mBAAmB,GAC3B,MAAM,CAiBR;AASD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,qBAAqB,GAC3B,+BAA+B,CA8BjC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,gBAAgB,GAC3B,yBAAyB,CA2B3B;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD,GAAG,wBAAwB,EAAE,CA8D7B"}
@@ -77,6 +77,13 @@ export function mapExperienceRecordToHubRecord(experience) {
77
77
  relatedExperienceIds: experience.relatedExperiences,
78
78
  previousBelief: experience.previousBelief,
79
79
  correctedBelief: experience.correctedBelief,
80
+ sourceMessageIds: experience.sourceMessageIds,
81
+ sourceRoomId: experience.sourceRoomId,
82
+ sourceTriggerMessageId: experience.sourceTriggerMessageId,
83
+ sourceTrajectoryId: experience.sourceTrajectoryId,
84
+ sourceTrajectoryStepId: experience.sourceTrajectoryStepId,
85
+ extractionMethod: experience.extractionMethod,
86
+ extractionReason: experience.extractionReason,
80
87
  };
81
88
  }
82
89
  export function buildCharacterOverviewItems(options) {
@@ -39,6 +39,13 @@ export interface CharacterExperienceRecord {
39
39
  relatedExperienceIds?: string[];
40
40
  previousBelief?: string | null;
41
41
  correctedBelief?: string | null;
42
+ sourceMessageIds?: string[];
43
+ sourceRoomId?: string | null;
44
+ sourceTriggerMessageId?: string | null;
45
+ sourceTrajectoryId?: string | null;
46
+ sourceTrajectoryStepId?: string | null;
47
+ extractionMethod?: string | null;
48
+ extractionReason?: string | null;
42
49
  }
43
50
  export interface CharacterExperienceDraft {
44
51
  learning: string;
@@ -1 +1 @@
1
- {"version":3,"file":"character-hub-types.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/character/character-hub-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,WAAW,GACX,YAAY,GACZ,cAAc,CAAC;AAEnB,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,wBAAwB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,gCAAgC,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1E,MAAM,WAAW,+BAA+B;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,gCAAgC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"character-hub-types.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/character/character-hub-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,WAAW,GACX,YAAY,GACZ,cAAc,CAAC;AAEnB,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,wBAAwB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,gCAAgC,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1E,MAAM,WAAW,+BAA+B;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,gCAAgC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"BootstrapStep.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/onboarding/BootstrapStep.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAyBtE,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAClE;AAwBD,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAoL1E"}
1
+ {"version":3,"file":"BootstrapStep.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/onboarding/BootstrapStep.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAyBtE,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAClE;AAwBD,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAoL1E"}
@@ -18,6 +18,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
18
  */
19
19
  import { cn } from "@elizaos/ui";
20
20
  import { useCallback, useId, useRef, useState } from "react";
21
+ import { client } from "../../api";
21
22
  import { OnboardingField, onboardingDetailStackClassName, onboardingHelperTextClassName, onboardingInputClassName, onboardingReadableTextFaintClassName, onboardingReadableTextMutedClassName, } from "./onboarding-form-primitives";
22
23
  import { OnboardingStepDivider, onboardingBodyTextShadowStyle, onboardingDescriptionClass, onboardingEyebrowClass, onboardingFooterClass, onboardingHeaderBlockClass, onboardingPrimaryActionClass, onboardingPrimaryActionTextShadowStyle, onboardingTextShadowStyle, onboardingTitleClass, } from "./onboarding-step-chrome";
23
24
  const SESSION_STORAGE_KEY = "milady_session";
@@ -50,8 +51,8 @@ export function BootstrapStep({ onAdvance, exchangeFn }) {
50
51
  result = await exchangeFn(rawToken);
51
52
  }
52
53
  else {
53
- // Lazy-import the real client to avoid a hard dependency in tests.
54
- const { client } = await import("../../api");
54
+ // `client` is statically imported above. The `exchangeFn` injection
55
+ // path remains the test seam; this branch is the production path.
55
56
  result = await client.postBootstrapExchange(rawToken);
56
57
  }
57
58
  }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * AppDetailsView — config + diagnostics + widgets + Launch button page
3
+ * for apps that need it (those with `hasDetailsPage: true` in their
4
+ * descriptor, or any registry/catalog app with launch params).
5
+ *
6
+ * Mounted by AppsView when the apps sub-path is `/apps/<slug>/details`.
7
+ */
8
+ import { type JSX } from "react";
9
+ import { type AppLaunchMode } from "../apps/per-app-config";
10
+ interface AppDetailsViewProps {
11
+ slug: string;
12
+ /**
13
+ * Called when the user successfully launches the app. The parent
14
+ * (AppsView) navigates the apps sub-path back to "browse" or to the
15
+ * inline run route depending on launch mode.
16
+ */
17
+ onLaunched?: (info: {
18
+ mode: AppLaunchMode;
19
+ slug: string;
20
+ }) => void;
21
+ }
22
+ export declare function AppDetailsView({ slug, onLaunched, }: AppDetailsViewProps): JSX.Element;
23
+ /**
24
+ * Convenience: does this slug resolve to an app that wants the details
25
+ * page? Used by AppsView.handleLaunch to decide whether to navigate to
26
+ * /apps/<slug>/details or call openAppRouteWindow directly.
27
+ *
28
+ * Only apps that explicitly declare `hasDetailsPage: true` (today: a
29
+ * handful of internal tools with real config / runtime knobs) route
30
+ * through the details page. Catalog and overlay apps launch directly —
31
+ * launching is the primary action; the user only needs the extra step
32
+ * when there's config worth touching first.
33
+ */
34
+ export declare function appNeedsDetailsPage(name: string): boolean;
35
+ export {};
36
+ //# sourceMappingURL=AppDetailsView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppDetailsView.d.ts","sourceRoot":"","sources":["../../../../../../../app-core/src/components/pages/AppDetailsView.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,GAAG,EAMT,MAAM,OAAO,CAAC;AAwBf,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,wBAAwB,CAAC;AAehC,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AA2ID,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,UAAU,GACX,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAgbnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD"}