@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,14 @@
1
+ import type { LifeOpsConnectorSide, LifeOpsDiscordConnectorStatus, LifeOpsOwnerBrowserAccessSource } from "@elizaos/shared/contracts/lifeops";
2
+ export interface UseDiscordConnectorOptions {
3
+ side?: LifeOpsConnectorSide;
4
+ }
5
+ export declare function useDiscordConnector(options?: UseDiscordConnectorOptions): {
6
+ readonly status: LifeOpsDiscordConnectorStatus | null;
7
+ readonly loading: boolean;
8
+ readonly actionPending: boolean;
9
+ readonly error: string | null;
10
+ readonly connect: (source?: LifeOpsOwnerBrowserAccessSource) => Promise<void>;
11
+ readonly disconnect: () => Promise<void>;
12
+ readonly refresh: () => Promise<void>;
13
+ };
14
+ //# sourceMappingURL=useDiscordConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDiscordConnector.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useDiscordConnector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,+BAA+B,EAChC,MAAM,mCAAmC,CAAC;AAU3C,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAID,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B;;;;;gCAiFxD,+BAA+B;;;EAwClD"}
@@ -0,0 +1,126 @@
1
+ import { client } from "@elizaos/app-core/api";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ function formatError(cause, fallback) {
4
+ if (cause instanceof Error && cause.message.trim().length > 0) {
5
+ return cause.message.trim();
6
+ }
7
+ return fallback;
8
+ }
9
+ const LOGIN_POLL_INTERVAL_MS = 3_000;
10
+ export function useDiscordConnector(options = {}) {
11
+ const side = options.side ?? "owner";
12
+ const [status, setStatus] = useState(null);
13
+ const [loading, setLoading] = useState(true);
14
+ const [actionPending, setActionPending] = useState(false);
15
+ const [error, setError] = useState(null);
16
+ const pollRef = useRef(null);
17
+ const clearPoll = useCallback(() => {
18
+ if (pollRef.current) {
19
+ clearInterval(pollRef.current);
20
+ pollRef.current = null;
21
+ }
22
+ }, []);
23
+ const refresh = useCallback(async () => {
24
+ setLoading(true);
25
+ try {
26
+ const nextStatus = await client.getDiscordConnectorStatus(side);
27
+ setStatus(nextStatus);
28
+ setError(null);
29
+ }
30
+ catch (cause) {
31
+ setError(formatError(cause, "Discord connector status failed to load."));
32
+ }
33
+ finally {
34
+ setLoading(false);
35
+ }
36
+ }, [side]);
37
+ useEffect(() => {
38
+ let cancelled = false;
39
+ void (async () => {
40
+ setLoading(true);
41
+ try {
42
+ const nextStatus = await client.getDiscordConnectorStatus(side);
43
+ if (cancelled)
44
+ return;
45
+ setStatus(nextStatus);
46
+ setError(null);
47
+ }
48
+ catch (cause) {
49
+ if (cancelled)
50
+ return;
51
+ setError(formatError(cause, "Discord connector status failed to load."));
52
+ }
53
+ finally {
54
+ if (!cancelled)
55
+ setLoading(false);
56
+ }
57
+ })();
58
+ return () => {
59
+ cancelled = true;
60
+ };
61
+ }, [side]);
62
+ useEffect(() => () => clearPoll(), [clearPoll]);
63
+ useEffect(() => {
64
+ const shouldPoll = status?.reason === "pairing" || status?.reason === "auth_pending";
65
+ if (shouldPoll && !pollRef.current) {
66
+ pollRef.current = setInterval(() => {
67
+ void (async () => {
68
+ try {
69
+ const next = await client.getDiscordConnectorStatus(side);
70
+ setStatus(next);
71
+ if (next.reason !== "pairing" && next.reason !== "auth_pending") {
72
+ clearPoll();
73
+ }
74
+ setError(null);
75
+ }
76
+ catch (cause) {
77
+ setError(formatError(cause, "Discord connector status poll failed."));
78
+ }
79
+ })();
80
+ }, LOGIN_POLL_INTERVAL_MS);
81
+ }
82
+ else if (!shouldPoll) {
83
+ clearPoll();
84
+ }
85
+ }, [status?.reason, side, clearPoll]);
86
+ const connect = useCallback(async (source) => {
87
+ try {
88
+ setActionPending(true);
89
+ setError(null);
90
+ const nextStatus = await client.startDiscordConnector({ side, source });
91
+ setStatus(nextStatus);
92
+ }
93
+ catch (cause) {
94
+ setError(formatError(cause, "Discord connector failed to start."));
95
+ }
96
+ finally {
97
+ setActionPending(false);
98
+ }
99
+ }, [side]);
100
+ const disconnect = useCallback(async () => {
101
+ try {
102
+ setActionPending(true);
103
+ const nextStatus = await client.disconnectDiscordConnector({
104
+ side,
105
+ provider: "discord",
106
+ });
107
+ setStatus(nextStatus);
108
+ setError(null);
109
+ }
110
+ catch (cause) {
111
+ setError(formatError(cause, "Discord connector disconnect failed."));
112
+ }
113
+ finally {
114
+ setActionPending(false);
115
+ }
116
+ }, [side]);
117
+ return {
118
+ status,
119
+ loading,
120
+ actionPending,
121
+ error,
122
+ connect,
123
+ disconnect,
124
+ refresh,
125
+ };
126
+ }
@@ -0,0 +1,29 @@
1
+ import type { LifeOpsConnectorMode, LifeOpsConnectorSide, LifeOpsGoogleConnectorStatus } from "../contracts/index.js";
2
+ export interface UseGoogleLifeOpsConnectorOptions {
3
+ includeAccounts?: boolean;
4
+ pollIntervalMs?: number;
5
+ pollWhileDisconnected?: boolean;
6
+ side?: LifeOpsConnectorSide;
7
+ }
8
+ export declare function useGoogleLifeOpsConnector(options?: UseGoogleLifeOpsConnectorOptions): {
9
+ readonly accounts: LifeOpsGoogleConnectorStatus[];
10
+ readonly activeMode: "local" | "remote" | "cloud_managed";
11
+ readonly actionPending: boolean;
12
+ readonly connect: () => Promise<void>;
13
+ readonly connectAdditional: () => Promise<void>;
14
+ readonly disconnect: () => Promise<void>;
15
+ readonly disconnectAccount: (grantId: string) => Promise<void>;
16
+ readonly error: string | null;
17
+ readonly loading: boolean;
18
+ readonly modeOptions: ("local" | "remote" | "cloud_managed")[];
19
+ readonly pendingAuthUrl: string | null;
20
+ readonly refresh: ({ silent, mode, }?: {
21
+ silent?: boolean;
22
+ mode?: LifeOpsConnectorMode | null;
23
+ }) => Promise<void>;
24
+ readonly selectMode: (mode: LifeOpsConnectorMode) => Promise<void>;
25
+ readonly selectedMode: "local" | "remote" | "cloud_managed" | null;
26
+ readonly side: "agent" | "owner";
27
+ readonly status: LifeOpsGoogleConnectorStatus | null;
28
+ };
29
+ //# sourceMappingURL=useGoogleLifeOpsConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGoogleLifeOpsConnector.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,oBAAoB,EACpB,oBAAoB,EAEpB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AA4K/B,MAAM,WAAW,gCAAgC;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gCAAqC;;;;;;;0CA0X5B,MAAM;;;;;2CAjVnB;QACD,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;KACpC;gCAuPY,oBAAoB;;;;EAkKpC"}
@@ -0,0 +1,481 @@
1
+ import { client } from "@elizaos/app-core/api";
2
+ import { isApiError } from "@elizaos/app-core/api/client-types-core";
3
+ import { APP_RESUME_EVENT } from "@elizaos/app-core/events";
4
+ import { useApp } from "@elizaos/app-core/state";
5
+ import { openExternalUrl } from "@elizaos/app-core/utils";
6
+ import { LIFEOPS_GOOGLE_CAPABILITIES } from "../contracts/index.js";
7
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
8
+ import { dispatchLifeOpsGoogleConnectorRefresh, LIFEOPS_GOOGLE_CONNECTOR_REFRESH_EVENT, } from "../events/index.js";
9
+ const DEFAULT_GOOGLE_CONNECTOR_POLL_INTERVAL_MS = 15_000;
10
+ const GOOGLE_CONNECTOR_SILENT_REFRESH_DEBOUNCE_MS = 150;
11
+ const GOOGLE_CONNECTOR_SILENT_REFRESH_COOLDOWN_MS = 1_000;
12
+ const DEFAULT_VISIBLE_GOOGLE_MODES = [
13
+ "cloud_managed",
14
+ "local",
15
+ ];
16
+ const GOOGLE_INBOX_TRACKING_CAPABILITIES = LIFEOPS_GOOGLE_CAPABILITIES.filter((capability) => capability !== "google.gmail.manage");
17
+ const GOOGLE_CONNECTOR_STORAGE_KEY = "elizaos:lifeops:google-connector-refresh";
18
+ const GOOGLE_CONNECTOR_BROADCAST_CHANNEL = "elizaos:lifeops:google-connector";
19
+ const GOOGLE_CONNECTOR_MESSAGE_TYPE = "lifeops-google-connector-refresh";
20
+ let googleConnectorHookInstanceSeed = 0;
21
+ function isLifeOpsRuntimeReady(args) {
22
+ return (args.startupPhase === "ready" &&
23
+ args.agentState === "running" &&
24
+ args.backendState === "connected");
25
+ }
26
+ function isTransientLifeOpsAvailabilityError(cause) {
27
+ return (isApiError(cause) &&
28
+ cause.kind === "http" &&
29
+ cause.status === 503 &&
30
+ cause.path.startsWith("/api/lifeops/connectors/google/status"));
31
+ }
32
+ function formatConnectorError(cause, fallback) {
33
+ if (cause instanceof Error && cause.message.trim().length > 0) {
34
+ return cause.message.trim();
35
+ }
36
+ return fallback;
37
+ }
38
+ function uniqueModes(modes) {
39
+ const ordered = [];
40
+ const seen = new Set();
41
+ for (const mode of modes) {
42
+ if (!mode || seen.has(mode)) {
43
+ continue;
44
+ }
45
+ seen.add(mode);
46
+ ordered.push(mode);
47
+ }
48
+ return ordered;
49
+ }
50
+ function resolveVisibleModes(status) {
51
+ return uniqueModes([
52
+ status?.mode,
53
+ status?.defaultMode,
54
+ ...(status?.availableModes ?? []),
55
+ ...DEFAULT_VISIBLE_GOOGLE_MODES,
56
+ ]);
57
+ }
58
+ function resolveConnectMode(status, selectedMode) {
59
+ if (status?.reason === "config_missing" &&
60
+ (selectedMode ?? status.mode) === "local" &&
61
+ (status.availableModes ?? []).includes("cloud_managed")) {
62
+ return "cloud_managed";
63
+ }
64
+ return selectedMode ?? status?.mode ?? status?.defaultMode ?? "cloud_managed";
65
+ }
66
+ function resolveSuccessRedirectUrl(side) {
67
+ const baseUrl = typeof client.getBaseUrl === "function" ? client.getBaseUrl().trim() : "";
68
+ const origin = baseUrl ||
69
+ (typeof window !== "undefined" &&
70
+ typeof window.location?.origin === "string" &&
71
+ window.location.origin.trim().length > 0
72
+ ? window.location.origin.trim()
73
+ : "");
74
+ if (!origin) {
75
+ return undefined;
76
+ }
77
+ const url = new URL("/api/lifeops/connectors/google/success", origin);
78
+ url.searchParams.set("side", side);
79
+ url.searchParams.set("mode", "cloud_managed");
80
+ return url.toString();
81
+ }
82
+ function normalizeRefreshDetail(value) {
83
+ if (!value || typeof value !== "object") {
84
+ return null;
85
+ }
86
+ const candidate = value;
87
+ const side = candidate.side === "owner" || candidate.side === "agent"
88
+ ? candidate.side
89
+ : undefined;
90
+ const mode = candidate.mode === "local" ||
91
+ candidate.mode === "remote" ||
92
+ candidate.mode === "cloud_managed"
93
+ ? candidate.mode
94
+ : undefined;
95
+ const source = candidate.source === "callback" ||
96
+ candidate.source === "connect" ||
97
+ candidate.source === "disconnect" ||
98
+ candidate.source === "mode_change" ||
99
+ candidate.source === "refresh" ||
100
+ candidate.source === "focus" ||
101
+ candidate.source === "visibility" ||
102
+ candidate.source === "resume"
103
+ ? candidate.source
104
+ : undefined;
105
+ return {
106
+ origin: typeof candidate.origin === "string" && candidate.origin.trim().length > 0
107
+ ? candidate.origin.trim()
108
+ : undefined,
109
+ side,
110
+ mode,
111
+ source,
112
+ };
113
+ }
114
+ function parseRefreshEnvelope(rawValue) {
115
+ try {
116
+ return JSON.parse(rawValue);
117
+ }
118
+ catch {
119
+ return null;
120
+ }
121
+ }
122
+ export function useGoogleLifeOpsConnector(options = {}) {
123
+ const { agentStatus, backendConnection, startupPhase } = useApp();
124
+ const includeAccounts = options.includeAccounts ?? false;
125
+ const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_GOOGLE_CONNECTOR_POLL_INTERVAL_MS;
126
+ const pollWhileDisconnected = options.pollWhileDisconnected ?? true;
127
+ const side = options.side ?? "owner";
128
+ const instanceIdRef = useRef(`google-connector-hook-${googleConnectorHookInstanceSeed++}`);
129
+ const pendingSilentRefreshModeRef = useRef(undefined);
130
+ const selectedModeRef = useRef(null);
131
+ const silentRefreshTimerRef = useRef(null);
132
+ const lastSilentRefreshAtRef = useRef(0);
133
+ const [selectedMode, setSelectedMode] = useState(null);
134
+ const [status, setStatus] = useState(null);
135
+ const [accounts, setAccounts] = useState([]);
136
+ const [loading, setLoading] = useState(true);
137
+ const [actionPending, setActionPending] = useState(false);
138
+ const [error, setError] = useState(null);
139
+ // Keep the latest OAuth URL local to the hook so it resets when the UI unmounts.
140
+ const [pendingAuthUrl, setPendingAuthUrl] = useState(null);
141
+ const runtimeReady = isLifeOpsRuntimeReady({
142
+ startupPhase,
143
+ agentState: agentStatus?.state ?? null,
144
+ backendState: backendConnection?.state ?? null,
145
+ });
146
+ const refresh = useCallback(async ({ silent = false, mode, } = {}) => {
147
+ if (!runtimeReady) {
148
+ setError(null);
149
+ setLoading(false);
150
+ return;
151
+ }
152
+ if (!silent) {
153
+ setLoading(true);
154
+ }
155
+ try {
156
+ const requestedMode = mode === undefined ? selectedModeRef.current : mode;
157
+ const [nextStatus, nextAccounts] = await Promise.all([
158
+ client.getGoogleLifeOpsConnectorStatus(requestedMode ?? undefined, side),
159
+ includeAccounts
160
+ ? client.getGoogleLifeOpsConnectorAccounts(undefined, side)
161
+ : Promise.resolve([]),
162
+ ]);
163
+ const nextSelectedMode = requestedMode ?? nextStatus.mode;
164
+ selectedModeRef.current = nextSelectedMode;
165
+ setSelectedMode(nextSelectedMode);
166
+ setStatus(nextStatus);
167
+ setAccounts(nextAccounts);
168
+ if (nextStatus.connected) {
169
+ setPendingAuthUrl(null);
170
+ }
171
+ setError(null);
172
+ }
173
+ catch (cause) {
174
+ if (isTransientLifeOpsAvailabilityError(cause)) {
175
+ setError(null);
176
+ return;
177
+ }
178
+ setError(formatConnectorError(cause, "Google connector status failed to refresh."));
179
+ }
180
+ finally {
181
+ setLoading(false);
182
+ }
183
+ }, [includeAccounts, runtimeReady, side]);
184
+ const queueSilentRefresh = useCallback((mode) => {
185
+ if (!runtimeReady) {
186
+ return;
187
+ }
188
+ if (mode !== undefined) {
189
+ pendingSilentRefreshModeRef.current = mode;
190
+ }
191
+ if (silentRefreshTimerRef.current !== null) {
192
+ return;
193
+ }
194
+ const elapsed = Date.now() - lastSilentRefreshAtRef.current;
195
+ const delay = elapsed >= GOOGLE_CONNECTOR_SILENT_REFRESH_COOLDOWN_MS
196
+ ? GOOGLE_CONNECTOR_SILENT_REFRESH_DEBOUNCE_MS
197
+ : GOOGLE_CONNECTOR_SILENT_REFRESH_COOLDOWN_MS - elapsed;
198
+ silentRefreshTimerRef.current = globalThis.setTimeout(() => {
199
+ silentRefreshTimerRef.current = null;
200
+ const nextMode = pendingSilentRefreshModeRef.current;
201
+ pendingSilentRefreshModeRef.current = undefined;
202
+ lastSilentRefreshAtRef.current = Date.now();
203
+ void refresh({
204
+ silent: true,
205
+ mode: nextMode,
206
+ });
207
+ }, delay);
208
+ }, [refresh, runtimeReady]);
209
+ useEffect(() => {
210
+ return () => {
211
+ if (silentRefreshTimerRef.current === null) {
212
+ return;
213
+ }
214
+ globalThis.clearTimeout(silentRefreshTimerRef.current);
215
+ silentRefreshTimerRef.current = null;
216
+ };
217
+ }, []);
218
+ useEffect(() => {
219
+ if (!runtimeReady) {
220
+ setLoading(false);
221
+ return;
222
+ }
223
+ void refresh();
224
+ }, [refresh, runtimeReady]);
225
+ useEffect(() => {
226
+ if (!runtimeReady) {
227
+ return;
228
+ }
229
+ if (pollIntervalMs <= 0) {
230
+ return;
231
+ }
232
+ if (!pollWhileDisconnected && status?.connected !== true) {
233
+ return;
234
+ }
235
+ const intervalId = globalThis.setInterval(() => {
236
+ void refresh({ silent: true });
237
+ }, pollIntervalMs);
238
+ return () => {
239
+ globalThis.clearInterval(intervalId);
240
+ };
241
+ }, [
242
+ pollIntervalMs,
243
+ pollWhileDisconnected,
244
+ refresh,
245
+ runtimeReady,
246
+ status?.connected,
247
+ ]);
248
+ useEffect(() => {
249
+ if (typeof window === "undefined") {
250
+ return;
251
+ }
252
+ const canUseWindowEvents = typeof window.addEventListener === "function" &&
253
+ typeof window.removeEventListener === "function";
254
+ const canUseDocumentEvents = typeof document !== "undefined" &&
255
+ typeof document.addEventListener === "function" &&
256
+ typeof document.removeEventListener === "function";
257
+ const refreshSilently = (detail) => {
258
+ if (!runtimeReady) {
259
+ return;
260
+ }
261
+ if (detail?.origin === instanceIdRef.current) {
262
+ return;
263
+ }
264
+ if (detail?.side && detail.side !== side) {
265
+ return;
266
+ }
267
+ queueSilentRefresh(detail?.mode);
268
+ };
269
+ const handleConnectorRefresh = (event) => {
270
+ refreshSilently(normalizeRefreshDetail(event.detail));
271
+ };
272
+ const handleWindowMessage = (event) => {
273
+ const message = event.data;
274
+ if (message?.type !== GOOGLE_CONNECTOR_MESSAGE_TYPE) {
275
+ return;
276
+ }
277
+ refreshSilently(normalizeRefreshDetail(message.detail));
278
+ };
279
+ const handleStorage = (event) => {
280
+ if (event.key !== GOOGLE_CONNECTOR_STORAGE_KEY ||
281
+ !event.newValue ||
282
+ event.newValue.trim().length === 0) {
283
+ return;
284
+ }
285
+ const parsed = parseRefreshEnvelope(event.newValue);
286
+ if (parsed?.type !== GOOGLE_CONNECTOR_MESSAGE_TYPE) {
287
+ return;
288
+ }
289
+ refreshSilently(normalizeRefreshDetail(parsed.detail));
290
+ };
291
+ const handleFocus = () => {
292
+ refreshSilently({ side, source: "focus" });
293
+ };
294
+ const handleVisibility = () => {
295
+ if (document.visibilityState !== "visible") {
296
+ return;
297
+ }
298
+ refreshSilently({ side, source: "visibility" });
299
+ };
300
+ const handleResume = () => {
301
+ refreshSilently({ side, source: "resume" });
302
+ };
303
+ const broadcastChannel = typeof BroadcastChannel === "function"
304
+ ? new BroadcastChannel(GOOGLE_CONNECTOR_BROADCAST_CHANNEL)
305
+ : null;
306
+ const handleBroadcastMessage = (event) => {
307
+ const message = event.data;
308
+ if (message?.type !== GOOGLE_CONNECTOR_MESSAGE_TYPE) {
309
+ return;
310
+ }
311
+ refreshSilently(normalizeRefreshDetail(message.detail));
312
+ };
313
+ if (canUseWindowEvents) {
314
+ window.addEventListener(LIFEOPS_GOOGLE_CONNECTOR_REFRESH_EVENT, handleConnectorRefresh);
315
+ window.addEventListener("message", handleWindowMessage);
316
+ window.addEventListener("storage", handleStorage);
317
+ window.addEventListener("focus", handleFocus);
318
+ }
319
+ if (canUseDocumentEvents) {
320
+ document.addEventListener("visibilitychange", handleVisibility);
321
+ document.addEventListener(APP_RESUME_EVENT, handleResume);
322
+ }
323
+ broadcastChannel?.addEventListener("message", handleBroadcastMessage);
324
+ return () => {
325
+ if (canUseWindowEvents) {
326
+ window.removeEventListener(LIFEOPS_GOOGLE_CONNECTOR_REFRESH_EVENT, handleConnectorRefresh);
327
+ window.removeEventListener("message", handleWindowMessage);
328
+ window.removeEventListener("storage", handleStorage);
329
+ window.removeEventListener("focus", handleFocus);
330
+ }
331
+ if (canUseDocumentEvents) {
332
+ document.removeEventListener("visibilitychange", handleVisibility);
333
+ document.removeEventListener(APP_RESUME_EVENT, handleResume);
334
+ }
335
+ broadcastChannel?.removeEventListener("message", handleBroadcastMessage);
336
+ broadcastChannel?.close();
337
+ };
338
+ }, [queueSilentRefresh, runtimeReady, side]);
339
+ const selectMode = useCallback(async (mode) => {
340
+ try {
341
+ setActionPending(true);
342
+ setPendingAuthUrl(null);
343
+ const nextStatus = (status?.availableModes ?? []).includes(mode)
344
+ ? await client.selectGoogleLifeOpsConnectorMode({ mode, side })
345
+ : await client.getGoogleLifeOpsConnectorStatus(mode, side);
346
+ selectedModeRef.current = mode;
347
+ setSelectedMode(mode);
348
+ setStatus(nextStatus);
349
+ setError(null);
350
+ dispatchLifeOpsGoogleConnectorRefresh({
351
+ origin: instanceIdRef.current,
352
+ side,
353
+ mode,
354
+ source: "mode_change",
355
+ });
356
+ }
357
+ catch (cause) {
358
+ setError(formatConnectorError(cause, "Google connector mode change failed."));
359
+ }
360
+ finally {
361
+ setActionPending(false);
362
+ }
363
+ }, [side, status]);
364
+ const connect = useCallback(async () => {
365
+ try {
366
+ setActionPending(true);
367
+ setPendingAuthUrl(null);
368
+ const requestedCapabilities = [...GOOGLE_INBOX_TRACKING_CAPABILITIES];
369
+ const connectMode = resolveConnectMode(status ?? null, selectedModeRef.current);
370
+ const result = await client.startGoogleLifeOpsConnector({
371
+ capabilities: requestedCapabilities,
372
+ redirectUrl: connectMode === "cloud_managed"
373
+ ? resolveSuccessRedirectUrl(side)
374
+ : undefined,
375
+ side,
376
+ mode: connectMode,
377
+ });
378
+ await openExternalUrl(result.authUrl);
379
+ setPendingAuthUrl(result.authUrl);
380
+ setError(null);
381
+ }
382
+ catch (cause) {
383
+ setPendingAuthUrl(null);
384
+ setError(formatConnectorError(cause, "Google connector setup failed to start."));
385
+ }
386
+ finally {
387
+ setActionPending(false);
388
+ }
389
+ }, [side, status]);
390
+ const disconnect = useCallback(async () => {
391
+ if (!status) {
392
+ return;
393
+ }
394
+ try {
395
+ setActionPending(true);
396
+ setPendingAuthUrl(null);
397
+ await client.disconnectGoogleLifeOpsConnector({
398
+ side,
399
+ mode: selectedModeRef.current ?? status.mode,
400
+ });
401
+ selectedModeRef.current = null;
402
+ await refresh({ mode: null });
403
+ dispatchLifeOpsGoogleConnectorRefresh({
404
+ origin: instanceIdRef.current,
405
+ side,
406
+ source: "disconnect",
407
+ });
408
+ }
409
+ catch (cause) {
410
+ setError(formatConnectorError(cause, "Google connector disconnect failed."));
411
+ }
412
+ finally {
413
+ setActionPending(false);
414
+ }
415
+ }, [refresh, side, status]);
416
+ const disconnectAccount = useCallback(async (grantId) => {
417
+ try {
418
+ setActionPending(true);
419
+ await client.disconnectGoogleLifeOpsConnector({
420
+ side,
421
+ mode: selectedModeRef.current ?? status?.mode,
422
+ grantId,
423
+ });
424
+ await refresh({ mode: selectedModeRef.current });
425
+ dispatchLifeOpsGoogleConnectorRefresh({
426
+ origin: instanceIdRef.current,
427
+ side,
428
+ source: "disconnect",
429
+ });
430
+ }
431
+ catch (cause) {
432
+ setError(formatConnectorError(cause, "Google account disconnect failed."));
433
+ }
434
+ finally {
435
+ setActionPending(false);
436
+ }
437
+ }, [refresh, side, status]);
438
+ const connectAdditional = useCallback(async () => {
439
+ try {
440
+ setActionPending(true);
441
+ const requestedCapabilities = [...GOOGLE_INBOX_TRACKING_CAPABILITIES];
442
+ const connectMode = resolveConnectMode(status ?? null, selectedModeRef.current);
443
+ const result = await client.startGoogleLifeOpsConnector({
444
+ capabilities: requestedCapabilities,
445
+ redirectUrl: connectMode === "cloud_managed"
446
+ ? resolveSuccessRedirectUrl(side)
447
+ : undefined,
448
+ side,
449
+ mode: connectMode,
450
+ });
451
+ await openExternalUrl(result.authUrl);
452
+ setError(null);
453
+ }
454
+ catch (cause) {
455
+ setError(formatConnectorError(cause, "Google connector setup failed to start."));
456
+ }
457
+ finally {
458
+ setActionPending(false);
459
+ }
460
+ }, [side, status]);
461
+ const modeOptions = useMemo(() => resolveVisibleModes(status), [status]);
462
+ const activeMode = selectedMode ?? status?.mode ?? status?.defaultMode ?? "cloud_managed";
463
+ return {
464
+ accounts,
465
+ activeMode,
466
+ actionPending,
467
+ connect,
468
+ connectAdditional,
469
+ disconnect,
470
+ disconnectAccount,
471
+ error,
472
+ loading,
473
+ modeOptions,
474
+ pendingAuthUrl,
475
+ refresh,
476
+ selectMode,
477
+ selectedMode,
478
+ side,
479
+ status,
480
+ };
481
+ }
@@ -0,0 +1,10 @@
1
+ import type { LifeOpsIMessageConnectorStatus } from "@elizaos/shared";
2
+ import type { FullDiskAccessProbeResult } from "../lifeops/fda-probe.js";
3
+ export declare function useIMessageConnector(): {
4
+ readonly status: LifeOpsIMessageConnectorStatus | null;
5
+ readonly loading: boolean;
6
+ readonly error: string | null;
7
+ readonly fullDiskAccess: FullDiskAccessProbeResult | null;
8
+ readonly refresh: () => Promise<void>;
9
+ };
10
+ //# sourceMappingURL=useIMessageConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIMessageConnector.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useIMessageConnector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAezE,wBAAgB,oBAAoB;;;;;;EAgDnC"}