@elizaos/agent 2.0.0-alpha.385 → 2.0.0-alpha.393

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 (377) 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-knowledge/src/routes.d.ts +1 -1
  6. package/apps/app-knowledge/src/routes.d.ts.map +1 -1
  7. package/apps/app-knowledge/src/routes.js +1 -1
  8. package/apps/app-lifeops/src/api/client-lifeops.js +6 -0
  9. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts +3 -0
  10. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts.map +1 -0
  11. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.js +189 -0
  12. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts +2 -0
  13. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts.map +1 -0
  14. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.js +1065 -0
  15. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts +7 -0
  16. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts.map +1 -0
  17. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.js +71 -0
  18. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts +14 -0
  19. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts.map +1 -0
  20. package/apps/app-lifeops/src/components/DataSourcesStrip.js +36 -0
  21. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts +23 -0
  22. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts.map +1 -0
  23. package/apps/app-lifeops/src/components/EventEditorDrawer.js +514 -0
  24. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts +2 -0
  25. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts.map +1 -0
  26. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.js +10 -0
  27. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts +15 -0
  28. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts.map +1 -0
  29. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.js +515 -0
  30. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts +34 -0
  31. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts.map +1 -0
  32. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.js +175 -0
  33. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts +2 -0
  34. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts.map +1 -0
  35. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.js +99 -0
  36. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts +37 -0
  37. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts.map +1 -0
  38. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.js +88 -0
  39. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts +13 -0
  40. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts.map +1 -0
  41. package/apps/app-lifeops/src/components/LifeOpsInboxSection.js +490 -0
  42. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts +12 -0
  43. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts.map +1 -0
  44. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.js +92 -0
  45. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts +12 -0
  46. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts.map +1 -0
  47. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.js +160 -0
  48. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts +3 -0
  49. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts.map +1 -0
  50. package/apps/app-lifeops/src/components/LifeOpsMoneySection.js +373 -0
  51. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts +9 -0
  52. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts.map +1 -0
  53. package/apps/app-lifeops/src/components/LifeOpsNavRail.js +93 -0
  54. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts +4 -0
  55. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts.map +1 -0
  56. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.js +274 -0
  57. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts +7 -0
  58. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts.map +1 -0
  59. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.js +657 -0
  60. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts +42 -0
  61. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts.map +1 -0
  62. package/apps/app-lifeops/src/components/LifeOpsPageSections.js +166 -0
  63. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts +2 -0
  64. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts.map +1 -0
  65. package/apps/app-lifeops/src/components/LifeOpsPageView.js +566 -0
  66. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts +2 -0
  67. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts.map +1 -0
  68. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.js +749 -0
  69. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts +27 -0
  70. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts.map +1 -0
  71. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.js +106 -0
  72. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts +2 -0
  73. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts.map +1 -0
  74. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.js +373 -0
  75. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts +10 -0
  76. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts.map +1 -0
  77. package/apps/app-lifeops/src/components/LifeOpsSectionContent.js +30 -0
  78. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts +21 -0
  79. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts.map +1 -0
  80. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.js +30 -0
  81. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts +20 -0
  82. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts.map +1 -0
  83. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.js +597 -0
  84. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts +13 -0
  85. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts.map +1 -0
  86. package/apps/app-lifeops/src/components/LifeOpsSetupGate.js +134 -0
  87. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts +10 -0
  88. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts.map +1 -0
  89. package/apps/app-lifeops/src/components/LifeOpsSleepSection.js +425 -0
  90. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts +11 -0
  91. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts.map +1 -0
  92. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.js +49 -0
  93. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts +2 -0
  94. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts.map +1 -0
  95. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.js +1041 -0
  96. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts +7 -0
  97. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts.map +1 -0
  98. package/apps/app-lifeops/src/components/MessagingConnectorCards.js +643 -0
  99. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts +9 -0
  100. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts.map +1 -0
  101. package/apps/app-lifeops/src/components/MissingSourceCard.js +5 -0
  102. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts +2 -0
  103. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts.map +1 -0
  104. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.js +163 -0
  105. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts +8 -0
  106. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts.map +1 -0
  107. package/apps/app-lifeops/src/components/SleepInspectionPanel.js +59 -0
  108. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts +3 -0
  109. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
  110. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.js +75 -0
  111. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts +8 -0
  112. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts.map +1 -0
  113. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.js +48 -0
  114. package/apps/app-lifeops/src/components/lifeops-labels.d.ts +2 -0
  115. package/apps/app-lifeops/src/components/lifeops-labels.d.ts.map +1 -0
  116. package/apps/app-lifeops/src/components/lifeops-labels.js +5 -0
  117. package/apps/app-lifeops/src/events/index.d.ts +34 -0
  118. package/apps/app-lifeops/src/events/index.d.ts.map +1 -0
  119. package/apps/app-lifeops/src/events/index.js +23 -0
  120. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts +28 -0
  121. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts.map +1 -0
  122. package/apps/app-lifeops/src/hooks/useCalendarWeek.js +93 -0
  123. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts +14 -0
  124. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts.map +1 -0
  125. package/apps/app-lifeops/src/hooks/useDiscordConnector.js +126 -0
  126. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts +29 -0
  127. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
  128. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.js +481 -0
  129. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts +10 -0
  130. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts.map +1 -0
  131. package/apps/app-lifeops/src/hooks/useIMessageConnector.js +50 -0
  132. package/apps/app-lifeops/src/hooks/useInbox.d.ts +34 -0
  133. package/apps/app-lifeops/src/hooks/useInbox.d.ts.map +1 -0
  134. package/apps/app-lifeops/src/hooks/useInbox.js +98 -0
  135. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts +2 -0
  136. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
  137. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.js +383 -0
  138. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts +9 -0
  139. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts.map +1 -0
  140. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.js +83 -0
  141. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
  142. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
  143. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
  144. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts +18 -0
  145. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts.map +1 -0
  146. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.js +66 -0
  147. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts +14 -0
  148. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts.map +1 -0
  149. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.js +79 -0
  150. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts +18 -0
  151. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts.map +1 -0
  152. package/apps/app-lifeops/src/hooks/useLifeOpsSection.js +78 -0
  153. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts +14 -0
  154. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts.map +1 -0
  155. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.js +160 -0
  156. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts +16 -0
  157. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts.map +1 -0
  158. package/apps/app-lifeops/src/hooks/useSignalConnector.js +198 -0
  159. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts +21 -0
  160. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts.map +1 -0
  161. package/apps/app-lifeops/src/hooks/useTelegramConnector.js +177 -0
  162. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts +8 -0
  163. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts.map +1 -0
  164. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.js +58 -0
  165. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts +12 -0
  166. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts.map +1 -0
  167. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.js +152 -0
  168. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +1 -1
  169. package/apps/app-lifeops/src/lifeops/google-gmail.d.ts.map +1 -1
  170. package/apps/app-lifeops/src/lifeops/google-gmail.js +74 -26
  171. package/apps/app-lifeops/src/lifeops/google-managed-client.d.ts.map +1 -1
  172. package/apps/app-lifeops/src/lifeops/google-managed-client.js +4 -5
  173. package/apps/app-lifeops/src/lifeops/google-oauth.d.ts.map +1 -1
  174. package/apps/app-lifeops/src/lifeops/google-oauth.js +2 -2
  175. package/apps/app-lifeops/src/lifeops/owner-profile.d.ts.map +1 -1
  176. package/apps/app-lifeops/src/lifeops/owner-profile.js +1 -1
  177. package/apps/app-lifeops/src/lifeops/paypal-managed-client.d.ts.map +1 -1
  178. package/apps/app-lifeops/src/lifeops/paypal-managed-client.js +4 -5
  179. package/apps/app-lifeops/src/lifeops/plaid-managed-client.d.ts.map +1 -1
  180. package/apps/app-lifeops/src/lifeops/plaid-managed-client.js +4 -5
  181. package/apps/app-lifeops/src/lifeops/schedule-sync-client.js +2 -2
  182. package/apps/app-lifeops/src/lifeops/service-constants.d.ts +1 -0
  183. package/apps/app-lifeops/src/lifeops/service-constants.d.ts.map +1 -1
  184. package/apps/app-lifeops/src/lifeops/service-constants.js +1 -0
  185. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts +1 -1
  186. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts.map +1 -1
  187. package/apps/app-lifeops/src/lifeops/service-mixin-core.js +2 -1
  188. package/apps/app-lifeops/src/lifeops/service-mixin-imessage.js +1 -1
  189. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts +3 -1
  190. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts.map +1 -1
  191. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.js +42 -13
  192. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.d.ts.map +1 -1
  193. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.js +3 -2
  194. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.d.ts.map +1 -1
  195. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.js +1 -1
  196. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts.map +1 -1
  197. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.js +3 -3
  198. package/apps/app-lifeops/src/lifeops/service-normalize-connector.d.ts +1 -1
  199. package/apps/app-lifeops/src/lifeops/service-normalize-connector.d.ts.map +1 -1
  200. package/apps/app-lifeops/src/lifeops/service-normalize-connector.js +2 -2
  201. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts.map +1 -1
  202. package/apps/app-lifeops/src/lifeops/signal-auth.js +6 -3
  203. package/apps/app-lifeops/src/lifeops/telegram-auth.js +1 -1
  204. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts.map +1 -1
  205. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.js +31 -6
  206. package/apps/app-lifeops/src/lifeops/twilio.js +1 -1
  207. package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
  208. package/apps/app-lifeops/src/lifeops/x-poster.js +13 -3
  209. package/apps/app-lifeops/src/lifeops-route.d.ts +74 -0
  210. package/apps/app-lifeops/src/lifeops-route.d.ts.map +1 -0
  211. package/apps/app-lifeops/src/lifeops-route.js +204 -0
  212. package/apps/app-lifeops/src/platform/lifeops-github.d.ts +15 -0
  213. package/apps/app-lifeops/src/platform/lifeops-github.d.ts.map +1 -0
  214. package/apps/app-lifeops/src/platform/lifeops-github.js +135 -0
  215. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts +2 -2
  216. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts.map +1 -1
  217. package/apps/app-lifeops/src/routes/cloud-features-routes.js +5 -3
  218. package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
  219. package/apps/app-lifeops/src/routes/lifeops-routes.js +15 -3
  220. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
  221. package/apps/app-lifeops/src/routes/plugin.js +10 -1
  222. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts +1 -1
  223. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts.map +1 -1
  224. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.js +4 -2
  225. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts +1 -1
  226. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts.map +1 -1
  227. package/apps/app-lifeops/src/ui.d.ts +11 -0
  228. package/apps/app-lifeops/src/ui.d.ts.map +1 -0
  229. package/apps/app-lifeops/src/ui.js +9 -0
  230. package/apps/app-lifeops/src/utils/lifeops-url.d.ts +5 -0
  231. package/apps/app-lifeops/src/utils/lifeops-url.d.ts.map +1 -0
  232. package/apps/app-lifeops/src/utils/lifeops-url.js +35 -0
  233. package/apps/app-lifeops/src/website-blocker/access.d.ts.map +1 -1
  234. package/apps/app-lifeops/src/website-blocker/access.js +1 -1
  235. package/apps/app-steward/src/routes/steward-compat-routes.d.ts +1 -1
  236. package/apps/app-steward/src/routes/steward-compat-routes.d.ts.map +1 -1
  237. package/apps/app-steward/src/routes/steward-compat-routes.js +3 -1
  238. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts +1 -1
  239. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts.map +1 -1
  240. package/apps/app-steward/src/routes/wallet-browser-compat-routes.js +3 -1
  241. package/apps/app-steward/src/routes/wallet-bsc-core-routes.d.ts.map +1 -1
  242. package/apps/app-steward/src/routes/wallet-bsc-core-routes.js +2 -1
  243. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts +1 -1
  244. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts.map +1 -1
  245. package/apps/app-steward/src/routes/wallet-compat-routes.js +3 -1
  246. package/apps/app-steward/src/routes/wallet-core-routes.d.ts.map +1 -1
  247. package/apps/app-steward/src/routes/wallet-core-routes.js +2 -1
  248. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts +1 -1
  249. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts.map +1 -1
  250. package/apps/app-steward/src/routes/wallet-trade-compat-routes.js +3 -1
  251. package/apps/app-training/src/core/dataset-generator.d.ts +1 -1
  252. package/apps/app-training/src/core/dataset-generator.d.ts.map +1 -1
  253. package/apps/app-training/src/core/roleplay-executor.d.ts +1 -1
  254. package/apps/app-training/src/core/roleplay-executor.d.ts.map +1 -1
  255. package/apps/app-training/src/core/trajectory-task-datasets.d.ts +1 -1
  256. package/apps/app-training/src/core/trajectory-task-datasets.d.ts.map +1 -1
  257. package/apps/app-training/src/index.d.ts +1 -2
  258. package/apps/app-training/src/index.d.ts.map +1 -1
  259. package/apps/app-training/src/index.js +1 -2
  260. package/apps/app-training/src/routes/training-routes.d.ts +1 -1
  261. package/apps/app-training/src/routes/training-routes.d.ts.map +1 -1
  262. package/apps/app-training/src/routes/training-routes.js +1 -1
  263. package/apps/app-training/src/routes/trajectory-routes.d.ts +1 -1
  264. package/apps/app-training/src/routes/trajectory-routes.d.ts.map +1 -1
  265. package/apps/app-training/src/routes/trajectory-routes.js +3 -1
  266. package/apps/app-training/src/services/training-service-like.d.ts +1 -1
  267. package/apps/app-training/src/services/training-service-like.d.ts.map +1 -1
  268. package/apps/app-training/src/services/training-service.d.ts +1 -1
  269. package/apps/app-training/src/services/training-service.d.ts.map +1 -1
  270. package/package.json +4 -4
  271. package/packages/agent/src/api/provider-switch-config.js +1 -1
  272. package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -1
  273. package/packages/agent/src/api/server-helpers-auth.js +5 -4
  274. package/packages/agent/src/providers/media-provider.d.ts +1 -1
  275. package/packages/agent/src/providers/media-provider.d.ts.map +1 -1
  276. package/packages/agent/src/providers/self-status.d.ts +1 -1
  277. package/packages/agent/src/providers/self-status.d.ts.map +1 -1
  278. package/packages/app-core/src/App.d.ts.map +1 -1
  279. package/packages/app-core/src/App.js +20 -12
  280. package/packages/app-core/src/api/auth.d.ts.map +1 -1
  281. package/packages/app-core/src/api/auth.js +5 -5
  282. package/packages/app-core/src/api/client-types-experience.d.ts +7 -0
  283. package/packages/app-core/src/api/client-types-experience.d.ts.map +1 -1
  284. package/packages/app-core/src/components/apps/helpers.d.ts +1 -1
  285. package/packages/app-core/src/components/apps/helpers.d.ts.map +1 -1
  286. package/packages/app-core/src/components/apps/helpers.js +1 -0
  287. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts +11 -0
  288. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts.map +1 -1
  289. package/packages/app-core/src/components/apps/internal-tool-apps.js +31 -0
  290. package/packages/app-core/src/components/apps/launch-history.d.ts +16 -0
  291. package/packages/app-core/src/components/apps/launch-history.d.ts.map +1 -0
  292. package/packages/app-core/src/components/apps/launch-history.js +77 -0
  293. package/packages/app-core/src/components/apps/per-app-config.d.ts +19 -0
  294. package/packages/app-core/src/components/apps/per-app-config.d.ts.map +1 -0
  295. package/packages/app-core/src/components/apps/per-app-config.js +99 -0
  296. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts +14 -0
  297. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts.map +1 -0
  298. package/packages/app-core/src/components/apps/useRegistryCatalog.js +52 -0
  299. package/packages/app-core/src/components/auth/LoginView.d.ts +1 -19
  300. package/packages/app-core/src/components/auth/LoginView.d.ts.map +1 -1
  301. package/packages/app-core/src/components/auth/LoginView.js +4 -99
  302. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.d.ts.map +1 -1
  303. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.js +14 -2
  304. package/packages/app-core/src/components/character/character-hub-helpers.d.ts.map +1 -1
  305. package/packages/app-core/src/components/character/character-hub-helpers.js +7 -0
  306. package/packages/app-core/src/components/character/character-hub-types.d.ts +7 -0
  307. package/packages/app-core/src/components/character/character-hub-types.d.ts.map +1 -1
  308. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts.map +1 -1
  309. package/packages/app-core/src/components/onboarding/BootstrapStep.js +3 -2
  310. package/packages/app-core/src/components/pages/AppDetailsView.d.ts +36 -0
  311. package/packages/app-core/src/components/pages/AppDetailsView.d.ts.map +1 -0
  312. package/packages/app-core/src/components/pages/AppDetailsView.js +289 -0
  313. package/packages/app-core/src/components/pages/AppsView.d.ts.map +1 -1
  314. package/packages/app-core/src/components/pages/AppsView.js +134 -42
  315. package/packages/app-core/src/components/shell/StartupShell.d.ts.map +1 -1
  316. package/packages/app-core/src/components/shell/StartupShell.js +2 -5
  317. package/packages/app-core/src/i18n/locales/en.json +256 -205
  318. package/packages/app-core/src/i18n/locales/es.json +256 -205
  319. package/packages/app-core/src/i18n/locales/ko.json +256 -205
  320. package/packages/app-core/src/i18n/locales/pt.json +256 -205
  321. package/packages/app-core/src/i18n/locales/tl.json +256 -205
  322. package/packages/app-core/src/i18n/locales/vi.json +256 -205
  323. package/packages/app-core/src/i18n/locales/zh-CN.json +256 -205
  324. package/packages/app-core/src/navigation/index.d.ts.map +1 -1
  325. package/packages/app-core/src/navigation/index.js +6 -0
  326. package/packages/app-core/src/services/auth-store.d.ts +1 -1
  327. package/packages/app-core/src/services/auth-store.d.ts.map +1 -1
  328. package/packages/app-core/src/services/auth-store.js +1 -1
  329. package/packages/app-core/src/shell/AppWindowRenderer.d.ts +17 -0
  330. package/packages/app-core/src/shell/AppWindowRenderer.d.ts.map +1 -0
  331. package/packages/app-core/src/shell/AppWindowRenderer.js +337 -0
  332. package/packages/app-core/src/shell/DetachedShellRoot.js +4 -1
  333. package/packages/app-core/src/shell/index.d.ts +1 -0
  334. package/packages/app-core/src/shell/index.d.ts.map +1 -1
  335. package/packages/app-core/src/shell/index.js +1 -0
  336. package/packages/app-core/src/state/startup-coordinator.d.ts.map +1 -1
  337. package/packages/app-core/src/state/startup-coordinator.js +0 -3
  338. package/packages/app-core/src/state/startup-phase-poll.d.ts.map +1 -1
  339. package/packages/app-core/src/state/startup-phase-poll.js +2 -4
  340. package/packages/app-core/src/state/usePluginsSkillsState.d.ts +6 -6
  341. package/packages/native-plugins/mobile-signals/src/definitions.d.ts +162 -0
  342. package/packages/native-plugins/mobile-signals/src/definitions.d.ts.map +1 -0
  343. package/packages/native-plugins/mobile-signals/src/definitions.js +1 -0
  344. package/packages/native-plugins/mobile-signals/src/index.d.ts +4 -0
  345. package/packages/native-plugins/mobile-signals/src/index.d.ts.map +1 -0
  346. package/packages/native-plugins/mobile-signals/src/index.js +6 -0
  347. package/packages/native-plugins/mobile-signals/src/web.d.ts +29 -0
  348. package/packages/native-plugins/mobile-signals/src/web.d.ts.map +1 -0
  349. package/packages/native-plugins/mobile-signals/src/web.js +269 -0
  350. package/packages/shared/src/app-hero-art.d.ts.map +1 -1
  351. package/packages/shared/src/app-hero-art.js +13 -0
  352. package/packages/shared/src/contracts/lifeops.d.ts +10 -0
  353. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  354. package/packages/shared/src/contracts/lifeops.js +5 -0
  355. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.d.ts.map +1 -1
  356. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.js +46 -4
  357. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.d.ts.map +1 -1
  358. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.js +34 -124
  359. package/packages/typescript/src/features/advanced-capabilities/experience/service.d.ts.map +1 -1
  360. package/packages/typescript/src/features/advanced-capabilities/experience/service.js +56 -0
  361. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts +7 -0
  362. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts.map +1 -1
  363. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts +7 -0
  364. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts.map +1 -0
  365. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.js +123 -0
  366. package/apps/app-training/src/ui/FineTuningView.d.ts +0 -5
  367. package/apps/app-training/src/ui/FineTuningView.d.ts.map +0 -1
  368. package/apps/app-training/src/ui/FineTuningView.js +0 -388
  369. package/apps/app-training/src/ui/fine-tuning-panels.d.ts +0 -111
  370. package/apps/app-training/src/ui/fine-tuning-panels.d.ts.map +0 -1
  371. package/apps/app-training/src/ui/fine-tuning-panels.js +0 -130
  372. package/apps/app-training/src/ui/index.d.ts +0 -3
  373. package/apps/app-training/src/ui/index.d.ts.map +0 -1
  374. package/apps/app-training/src/ui/index.js +0 -2
  375. package/packages/app-core/src/api/trusted-local-request.d.ts +0 -4
  376. package/packages/app-core/src/api/trusted-local-request.d.ts.map +0 -1
  377. package/packages/app-core/src/api/trusted-local-request.js +0 -176
@@ -0,0 +1,50 @@
1
+ import { client } from "@elizaos/app-core/api";
2
+ import { useCallback, useEffect, 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
+ function isMacHostPlatform(platform) {
10
+ return platform === "darwin";
11
+ }
12
+ export function useIMessageConnector() {
13
+ const [status, setStatus] = useState(null);
14
+ const [loading, setLoading] = useState(true);
15
+ const [error, setError] = useState(null);
16
+ const [fullDiskAccess, setFullDiskAccess] = useState(null);
17
+ const refreshSupportState = useCallback(async (nextStatus) => {
18
+ if (!isMacHostPlatform(nextStatus?.hostPlatform)) {
19
+ setFullDiskAccess(null);
20
+ return;
21
+ }
22
+ const fullDiskAccessResult = await client.getLifeOpsFullDiskAccessStatus();
23
+ setFullDiskAccess(fullDiskAccessResult);
24
+ }, []);
25
+ const refresh = useCallback(async () => {
26
+ setLoading(true);
27
+ try {
28
+ const nextStatus = await client.getIMessageConnectorStatus();
29
+ setStatus(nextStatus);
30
+ setError(null);
31
+ await refreshSupportState(nextStatus);
32
+ }
33
+ catch (cause) {
34
+ setError(formatError(cause, "iMessage connector status failed to load."));
35
+ }
36
+ finally {
37
+ setLoading(false);
38
+ }
39
+ }, [refreshSupportState]);
40
+ useEffect(() => {
41
+ void refresh();
42
+ }, [refresh]);
43
+ return {
44
+ status,
45
+ loading,
46
+ error,
47
+ fullDiskAccess,
48
+ refresh,
49
+ };
50
+ }
@@ -0,0 +1,34 @@
1
+ import type { LifeOpsInboxChannel, LifeOpsInboxMessage, LifeOpsInboxThreadGroup } from "@elizaos/shared";
2
+ export type InboxChannel = "all" | LifeOpsInboxChannel;
3
+ export type InboxChatType = "dm" | "group" | "channel";
4
+ export interface UseInboxOptions {
5
+ maxResults?: number;
6
+ channel?: InboxChannel;
7
+ channels?: readonly LifeOpsInboxChannel[];
8
+ searchQuery?: string;
9
+ /** When true, request `threadGroups` from the backend. */
10
+ groupByThread?: boolean;
11
+ /** Server-side chatType filter (DM / small group / channel). */
12
+ chatTypeFilter?: ReadonlyArray<InboxChatType>;
13
+ /** Server-side cap on group participants. */
14
+ maxParticipants?: number;
15
+ /** Filter Gmail to a specific Google grant. */
16
+ gmailAccountId?: string;
17
+ /** Only return threads that have gone unreplied for >24h with priority >=50. */
18
+ missedOnly?: boolean;
19
+ /** Sort thread groups by priority desc with recency tiebreaker. */
20
+ sortByPriority?: boolean;
21
+ }
22
+ export interface UseInboxResult {
23
+ messages: LifeOpsInboxMessage[];
24
+ threadGroups: LifeOpsInboxThreadGroup[];
25
+ loading: boolean;
26
+ error: string | null;
27
+ refresh: () => Promise<void>;
28
+ channel: InboxChannel;
29
+ setChannel: (ch: InboxChannel) => void;
30
+ searchQuery: string;
31
+ setSearchQuery: (q: string) => void;
32
+ }
33
+ export declare function useInbox(opts?: UseInboxOptions): UseInboxResult;
34
+ //# sourceMappingURL=useInbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInbox.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useInbox.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,mBAAmB,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,cAAc,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9C,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AA0BD,wBAAgB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,cAAc,CA0FnE"}
@@ -0,0 +1,98 @@
1
+ import { client, useApp } from "@elizaos/app-core";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ const DEFAULT_MAX_RESULTS = 40;
4
+ function matchesQuery(message, q) {
5
+ return ((message.subject ?? "").toLowerCase().includes(q) ||
6
+ message.sender.displayName.toLowerCase().includes(q) ||
7
+ message.snippet.toLowerCase().includes(q) ||
8
+ message.channel.toLowerCase().includes(q));
9
+ }
10
+ function threadGroupMatchesQuery(group, q) {
11
+ if (matchesQuery(group.latestMessage, q)) {
12
+ return true;
13
+ }
14
+ return (group.messages ?? []).some((message) => matchesQuery(message, q));
15
+ }
16
+ export function useInbox(opts = {}) {
17
+ const { t } = useApp();
18
+ const [feed, setFeed] = useState(null);
19
+ const [loading, setLoading] = useState(false);
20
+ const [error, setError] = useState(null);
21
+ const [channel, setChannel] = useState(opts.channel ?? "all");
22
+ const [searchQuery, setSearchQuery] = useState(opts.searchQuery ?? "");
23
+ useEffect(() => {
24
+ setChannel(opts.channel ?? "all");
25
+ }, [opts.channel]);
26
+ const chatTypeFilterKey = opts.chatTypeFilter
27
+ ? opts.chatTypeFilter.join(",")
28
+ : "";
29
+ const fetch = useCallback(async () => {
30
+ setLoading(true);
31
+ setError(null);
32
+ try {
33
+ const selectedChannels = channel === "all"
34
+ ? opts.channels
35
+ ? [...opts.channels]
36
+ : undefined
37
+ : [channel];
38
+ const result = await client.getLifeOpsInbox({
39
+ limit: opts.maxResults ?? DEFAULT_MAX_RESULTS,
40
+ channels: selectedChannels,
41
+ groupByThread: opts.groupByThread,
42
+ chatTypeFilter: opts.chatTypeFilter
43
+ ? [...opts.chatTypeFilter]
44
+ : undefined,
45
+ maxParticipants: opts.maxParticipants,
46
+ gmailAccountId: opts.gmailAccountId,
47
+ missedOnly: opts.missedOnly,
48
+ sortByPriority: opts.sortByPriority,
49
+ });
50
+ setFeed(result);
51
+ }
52
+ catch (cause) {
53
+ setError(cause instanceof Error && cause.message.trim().length > 0
54
+ ? cause.message.trim()
55
+ : t("lifeopsInbox.loadFailed", {
56
+ defaultValue: "Inbox failed to load.",
57
+ }));
58
+ }
59
+ finally {
60
+ setLoading(false);
61
+ }
62
+ }, [
63
+ channel,
64
+ opts.channels,
65
+ opts.maxResults,
66
+ opts.groupByThread,
67
+ chatTypeFilterKey,
68
+ opts.maxParticipants,
69
+ opts.gmailAccountId,
70
+ opts.missedOnly,
71
+ opts.sortByPriority,
72
+ t,
73
+ ]);
74
+ useEffect(() => {
75
+ void fetch();
76
+ }, [fetch]);
77
+ const messages = useMemo(() => {
78
+ const base = feed?.messages ?? [];
79
+ const q = searchQuery.trim().toLowerCase();
80
+ return q ? base.filter((m) => matchesQuery(m, q)) : base;
81
+ }, [feed, searchQuery]);
82
+ const threadGroups = useMemo(() => {
83
+ const base = feed?.threadGroups ?? [];
84
+ const q = searchQuery.trim().toLowerCase();
85
+ return q ? base.filter((g) => threadGroupMatchesQuery(g, q)) : base;
86
+ }, [feed, searchQuery]);
87
+ return {
88
+ messages,
89
+ threadGroups,
90
+ loading,
91
+ error,
92
+ refresh: fetch,
93
+ channel,
94
+ setChannel,
95
+ searchQuery,
96
+ setSearchQuery,
97
+ };
98
+ }
@@ -0,0 +1,2 @@
1
+ export declare function useLifeOpsActivitySignals(enabled?: boolean): void;
2
+ //# sourceMappingURL=useLifeOpsActivitySignals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLifeOpsActivitySignals.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.ts"],"names":[],"mappings":"AAiJA,wBAAgB,yBAAyB,CAAC,OAAO,UAAO,GAAG,IAAI,CAuU9D"}
@@ -0,0 +1,383 @@
1
+ import { Capacitor } from "@capacitor/core";
2
+ import { APP_PAUSE_EVENT, APP_RESUME_EVENT, client, isApiError, isElectrobunRuntime, loadDesktopWorkspaceSnapshot, } from "@elizaos/app-core";
3
+ import { MobileSignals, } from "@elizaos/capacitor-mobile-signals";
4
+ import { useEffect, useRef } from "react";
5
+ import { dispatchLifeOpsActivitySignalsStatus } from "../events/index.js";
6
+ const APP_SIGNAL_DEDUP_WINDOW_MS = 5_000;
7
+ const RUNTIME_READY_POLL_MS = 5_000;
8
+ const PAGE_HEARTBEAT_MS = 60_000;
9
+ const DESKTOP_POWER_POLL_MS = 60_000;
10
+ // Health sleep data drives wake detection; five-minute polling keeps morning
11
+ // anchors timely without running while mobile monitoring is stopped.
12
+ const MOBILE_HEALTH_POLL_MS = 5 * 60_000;
13
+ function getWindowCapacitor() {
14
+ if (typeof window === "undefined") {
15
+ return undefined;
16
+ }
17
+ return window.Capacitor;
18
+ }
19
+ function resolveCapacitorPlatform() {
20
+ const importedPlatform = Capacitor.getPlatform();
21
+ if (importedPlatform !== "web") {
22
+ return importedPlatform;
23
+ }
24
+ return getWindowCapacitor()?.getPlatform?.() ?? importedPlatform;
25
+ }
26
+ function isNativeCapacitorRuntime() {
27
+ return (Capacitor.isNativePlatform() ||
28
+ getWindowCapacitor()?.isNativePlatform?.() === true ||
29
+ ["ios", "android"].includes(resolveCapacitorPlatform()));
30
+ }
31
+ function resolveActivityPlatform() {
32
+ if (isElectrobunRuntime()) {
33
+ return "desktop_app";
34
+ }
35
+ if (isNativeCapacitorRuntime()) {
36
+ return "mobile_app";
37
+ }
38
+ return "web_app";
39
+ }
40
+ function errorMessage(error) {
41
+ return error instanceof Error && error.message.trim().length > 0
42
+ ? error.message.trim()
43
+ : String(error);
44
+ }
45
+ function fingerprintSignal(signal) {
46
+ return JSON.stringify([
47
+ signal.source,
48
+ signal.platform ?? "",
49
+ signal.state,
50
+ signal.idleState ?? "",
51
+ signal.idleTimeSeconds ?? "",
52
+ signal.onBattery ?? "",
53
+ signal.metadata ?? {},
54
+ ]);
55
+ }
56
+ function mapMobileSignal(signal) {
57
+ return {
58
+ source: signal.source,
59
+ platform: signal.platform,
60
+ state: signal.state,
61
+ observedAt: new Date(signal.observedAt).toISOString(),
62
+ idleState: signal.idleState,
63
+ idleTimeSeconds: signal.idleTimeSeconds ?? undefined,
64
+ onBattery: signal.onBattery ?? undefined,
65
+ health: signal.source === "mobile_health"
66
+ ? {
67
+ source: signal.healthSource,
68
+ permissions: signal.permissions,
69
+ sleep: {
70
+ available: signal.sleep.available,
71
+ isSleeping: signal.sleep.isSleeping,
72
+ asleepAt: signal.sleep.asleepAt !== null
73
+ ? new Date(signal.sleep.asleepAt).toISOString()
74
+ : null,
75
+ awakeAt: signal.sleep.awakeAt !== null
76
+ ? new Date(signal.sleep.awakeAt).toISOString()
77
+ : null,
78
+ durationMinutes: signal.sleep.durationMinutes,
79
+ stage: signal.sleep.stage,
80
+ },
81
+ biometrics: {
82
+ sampleAt: signal.biometrics.sampleAt !== null
83
+ ? new Date(signal.biometrics.sampleAt).toISOString()
84
+ : null,
85
+ heartRateBpm: signal.biometrics.heartRateBpm,
86
+ restingHeartRateBpm: signal.biometrics.restingHeartRateBpm,
87
+ heartRateVariabilityMs: signal.biometrics.heartRateVariabilityMs,
88
+ respiratoryRate: signal.biometrics.respiratoryRate,
89
+ bloodOxygenPercent: signal.biometrics.bloodOxygenPercent,
90
+ },
91
+ warnings: signal.warnings,
92
+ }
93
+ : undefined,
94
+ metadata: signal.metadata,
95
+ };
96
+ }
97
+ export function useLifeOpsActivitySignals(enabled = true) {
98
+ const platformRef = useRef(resolveActivityPlatform());
99
+ const lastSentRef = useRef(new Map());
100
+ const runtimeReadyRef = useRef(false);
101
+ useEffect(() => {
102
+ if (!enabled) {
103
+ return;
104
+ }
105
+ let mounted = true;
106
+ const isRuntimeUnavailableError = (error) => isApiError(error) &&
107
+ error.kind === "http" &&
108
+ error.status === 503 &&
109
+ error.path === "/api/lifeops/activity-signals";
110
+ const reportCaptureError = (error) => {
111
+ if (isRuntimeUnavailableError(error)) {
112
+ runtimeReadyRef.current = false;
113
+ return;
114
+ }
115
+ if (isApiError(error) &&
116
+ (error.kind === "network" ||
117
+ error.kind === "timeout" ||
118
+ (error.status === 503 &&
119
+ error.path === "/api/lifeops/activity-signals"))) {
120
+ return;
121
+ }
122
+ dispatchLifeOpsActivitySignalsStatus({
123
+ status: "capture_error",
124
+ message: errorMessage(error),
125
+ });
126
+ };
127
+ const refreshRuntimeReady = async () => {
128
+ try {
129
+ const status = await client.getStatus();
130
+ const ready = status.state === "running";
131
+ runtimeReadyRef.current = ready;
132
+ return ready;
133
+ }
134
+ catch {
135
+ runtimeReadyRef.current = false;
136
+ return false;
137
+ }
138
+ };
139
+ const sendSignal = async (signal) => {
140
+ if (!mounted || !runtimeReadyRef.current) {
141
+ return null;
142
+ }
143
+ const normalized = {
144
+ ...signal,
145
+ platform: signal.platform ?? platformRef.current,
146
+ };
147
+ const fingerprint = fingerprintSignal(normalized);
148
+ const dedupeKey = `${normalized.source}:${normalized.platform ?? ""}`;
149
+ const previous = lastSentRef.current.get(dedupeKey);
150
+ const nowMs = Date.now();
151
+ if (previous &&
152
+ previous.fingerprint === fingerprint &&
153
+ nowMs - previous.sentAtMs < APP_SIGNAL_DEDUP_WINDOW_MS) {
154
+ return null;
155
+ }
156
+ lastSentRef.current.set(dedupeKey, { fingerprint, sentAtMs: nowMs });
157
+ try {
158
+ const { signal: persisted } = await client.captureLifeOpsActivitySignal(normalized);
159
+ return persisted;
160
+ }
161
+ catch (error) {
162
+ lastSentRef.current.delete(dedupeKey);
163
+ if (isRuntimeUnavailableError(error)) {
164
+ runtimeReadyRef.current = false;
165
+ return null;
166
+ }
167
+ throw error;
168
+ }
169
+ };
170
+ const sendSnapshotResult = async (result) => {
171
+ if (result.snapshot) {
172
+ await sendSignal(mapMobileSignal(result.snapshot));
173
+ }
174
+ if (result.healthSnapshot) {
175
+ await sendSignal(mapMobileSignal(result.healthSnapshot));
176
+ }
177
+ };
178
+ const fireAndForget = (signal) => {
179
+ void sendSignal(signal).catch(reportCaptureError);
180
+ };
181
+ const emitPageState = (reason) => {
182
+ const isVisible = document.visibilityState === "visible";
183
+ const hasFocus = typeof document.hasFocus === "function" ? document.hasFocus() : true;
184
+ fireAndForget({
185
+ source: "page_visibility",
186
+ state: isVisible && hasFocus ? "active" : "background",
187
+ metadata: {
188
+ reason,
189
+ visibilityState: document.visibilityState,
190
+ hasFocus,
191
+ },
192
+ });
193
+ };
194
+ const emitLifecycleState = (state) => {
195
+ fireAndForget({
196
+ source: "app_lifecycle",
197
+ state,
198
+ metadata: { reason: state === "active" ? "resume" : "pause" },
199
+ });
200
+ };
201
+ const emitDesktopSnapshot = async (reason) => {
202
+ try {
203
+ if (!isElectrobunRuntime()) {
204
+ return;
205
+ }
206
+ const snapshot = await loadDesktopWorkspaceSnapshot();
207
+ if (!snapshot.supported || !snapshot.power) {
208
+ return;
209
+ }
210
+ const state = snapshot.power.idleState === "locked"
211
+ ? "locked"
212
+ : snapshot.power.idleState === "idle"
213
+ ? "idle"
214
+ : snapshot.window.focused &&
215
+ document.visibilityState === "visible"
216
+ ? "active"
217
+ : "background";
218
+ await sendSignal({
219
+ source: "desktop_power",
220
+ state,
221
+ idleState: snapshot.power.idleState,
222
+ idleTimeSeconds: Math.max(0, Math.trunc(snapshot.power.idleTime)),
223
+ onBattery: snapshot.power.onBattery,
224
+ metadata: {
225
+ reason,
226
+ windowFocused: snapshot.window.focused,
227
+ windowVisible: snapshot.window.visible,
228
+ documentVisibility: document.visibilityState,
229
+ },
230
+ });
231
+ }
232
+ catch (error) {
233
+ reportCaptureError(error);
234
+ }
235
+ };
236
+ const handleVisibilityChange = () => {
237
+ emitPageState("visibilitychange");
238
+ };
239
+ const handleFocus = () => {
240
+ emitPageState("focus");
241
+ void emitDesktopSnapshot("focus");
242
+ };
243
+ const handleBlur = () => {
244
+ emitPageState("blur");
245
+ void emitDesktopSnapshot("blur");
246
+ };
247
+ const handleResume = () => {
248
+ emitLifecycleState("active");
249
+ emitPageState("resume");
250
+ void refreshMobileHealthSnapshot("resume");
251
+ void emitDesktopSnapshot("resume");
252
+ };
253
+ const handlePause = () => {
254
+ emitLifecycleState("background");
255
+ emitPageState("pause");
256
+ void refreshMobileHealthSnapshot("pause");
257
+ void emitDesktopSnapshot("pause");
258
+ };
259
+ const mobileSignals = isNativeCapacitorRuntime() && !isElectrobunRuntime()
260
+ ? MobileSignals
261
+ : null;
262
+ let mobileSignalsHandle = null;
263
+ let mobileSignalsStarted = false;
264
+ let mobileHealthPoller = null;
265
+ const refreshMobileHealthSnapshot = async (reason) => {
266
+ if (!mobileSignals || typeof mobileSignals.getSnapshot !== "function") {
267
+ return;
268
+ }
269
+ const snapshot = await mobileSignals.getSnapshot();
270
+ if (snapshot.supported) {
271
+ await sendSnapshotResult(snapshot);
272
+ }
273
+ else {
274
+ dispatchLifeOpsActivitySignalsStatus({
275
+ status: "snapshot_unavailable",
276
+ reason,
277
+ });
278
+ }
279
+ };
280
+ const startMobileSignals = async () => {
281
+ if (mobileSignalsHandle || mobileSignalsStarted) {
282
+ return;
283
+ }
284
+ if (!mobileSignals ||
285
+ typeof mobileSignals.addListener !== "function" ||
286
+ typeof mobileSignals.checkPermissions !== "function" ||
287
+ typeof mobileSignals.requestPermissions !== "function" ||
288
+ typeof mobileSignals.startMonitoring !== "function" ||
289
+ typeof mobileSignals.stopMonitoring !== "function") {
290
+ return;
291
+ }
292
+ const permissions = await mobileSignals.checkPermissions();
293
+ if (permissions.status !== "granted" && permissions.canRequest) {
294
+ await mobileSignals.requestPermissions();
295
+ }
296
+ mobileSignalsHandle = await mobileSignals.addListener("signal", (signal) => {
297
+ void sendSignal(mapMobileSignal(signal)).catch(reportCaptureError);
298
+ });
299
+ const initial = await mobileSignals.startMonitoring({
300
+ emitInitial: true,
301
+ });
302
+ mobileSignalsStarted = initial.enabled;
303
+ await sendSnapshotResult(initial);
304
+ await refreshMobileHealthSnapshot("start");
305
+ if (typeof mobileSignals.scheduleBackgroundRefresh === "function") {
306
+ try {
307
+ const result = await mobileSignals.scheduleBackgroundRefresh();
308
+ if (!result.scheduled && result.reason) {
309
+ dispatchLifeOpsActivitySignalsStatus({
310
+ status: "background_refresh_unavailable",
311
+ reason: result.reason,
312
+ });
313
+ }
314
+ }
315
+ catch (error) {
316
+ reportCaptureError(error);
317
+ }
318
+ }
319
+ mobileHealthPoller = window.setInterval(() => {
320
+ void refreshMobileHealthSnapshot("poll").catch(reportCaptureError);
321
+ }, MOBILE_HEALTH_POLL_MS);
322
+ };
323
+ const emitCurrentState = (reason) => {
324
+ emitLifecycleState("active");
325
+ emitPageState(reason);
326
+ void emitDesktopSnapshot(reason);
327
+ void refreshMobileHealthSnapshot(reason).catch(reportCaptureError);
328
+ };
329
+ void refreshRuntimeReady()
330
+ .then((ready) => {
331
+ if (ready) {
332
+ emitCurrentState("mount");
333
+ void startMobileSignals().catch(reportCaptureError);
334
+ }
335
+ })
336
+ .catch(reportCaptureError);
337
+ document.addEventListener("visibilitychange", handleVisibilityChange);
338
+ document.addEventListener(APP_RESUME_EVENT, handleResume);
339
+ document.addEventListener(APP_PAUSE_EVENT, handlePause);
340
+ window.addEventListener("focus", handleFocus);
341
+ window.addEventListener("blur", handleBlur);
342
+ const runtimePoller = window.setInterval(() => {
343
+ const wasReady = runtimeReadyRef.current;
344
+ void refreshRuntimeReady()
345
+ .then((ready) => {
346
+ if (!mounted || !ready || wasReady) {
347
+ return;
348
+ }
349
+ emitCurrentState("runtime-ready");
350
+ void startMobileSignals().catch(reportCaptureError);
351
+ })
352
+ .catch(reportCaptureError);
353
+ }, RUNTIME_READY_POLL_MS);
354
+ const pageHeartbeat = window.setInterval(() => {
355
+ if (document.visibilityState === "visible") {
356
+ emitPageState("heartbeat");
357
+ }
358
+ }, PAGE_HEARTBEAT_MS);
359
+ const desktopPoller = window.setInterval(() => {
360
+ void emitDesktopSnapshot("poll");
361
+ }, DESKTOP_POWER_POLL_MS);
362
+ return () => {
363
+ mounted = false;
364
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
365
+ document.removeEventListener(APP_RESUME_EVENT, handleResume);
366
+ document.removeEventListener(APP_PAUSE_EVENT, handlePause);
367
+ window.removeEventListener("focus", handleFocus);
368
+ window.removeEventListener("blur", handleBlur);
369
+ if (mobileSignalsHandle) {
370
+ void mobileSignalsHandle.remove();
371
+ }
372
+ if (mobileSignalsStarted) {
373
+ void mobileSignals?.stopMonitoring().catch(reportCaptureError);
374
+ }
375
+ if (mobileHealthPoller !== null) {
376
+ window.clearInterval(mobileHealthPoller);
377
+ }
378
+ window.clearInterval(runtimePoller);
379
+ window.clearInterval(pageHeartbeat);
380
+ window.clearInterval(desktopPoller);
381
+ };
382
+ }, [enabled]);
383
+ }
@@ -0,0 +1,9 @@
1
+ export declare function useLifeOpsAppState(): {
2
+ enabled: boolean;
3
+ loading: boolean;
4
+ saving: boolean;
5
+ error: string;
6
+ refresh: () => Promise<import("../api/client-lifeops").LifeOpsAppStateDto>;
7
+ updateEnabled: (nextEnabled: boolean) => Promise<import("../api/client-lifeops").LifeOpsAppStateDto>;
8
+ };
9
+ //# sourceMappingURL=useLifeOpsAppState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLifeOpsAppState.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/hooks/useLifeOpsAppState.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB;;;;;;iCAkDsB,OAAO;EAyB9D"}
@@ -0,0 +1,83 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import { client } from "@elizaos/app-core";
3
+ function errorMessage(cause) {
4
+ return cause instanceof Error && cause.message.trim().length > 0
5
+ ? cause.message.trim()
6
+ : "LifeOps app state failed to load.";
7
+ }
8
+ export function useLifeOpsAppState() {
9
+ const [enabled, setEnabled] = useState(false);
10
+ const [loading, setLoading] = useState(true);
11
+ const [saving, setSaving] = useState(false);
12
+ const [error, setError] = useState(null);
13
+ const refresh = useCallback(async () => {
14
+ setLoading(true);
15
+ try {
16
+ const state = await client.getLifeOpsAppState();
17
+ setEnabled(state.enabled === true);
18
+ setError(null);
19
+ return state;
20
+ }
21
+ catch (cause) {
22
+ setError(errorMessage(cause));
23
+ throw cause;
24
+ }
25
+ finally {
26
+ setLoading(false);
27
+ }
28
+ }, []);
29
+ useEffect(() => {
30
+ let cancelled = false;
31
+ void (async () => {
32
+ setLoading(true);
33
+ try {
34
+ const state = await client.getLifeOpsAppState();
35
+ if (cancelled) {
36
+ return;
37
+ }
38
+ setEnabled(state.enabled === true);
39
+ setError(null);
40
+ }
41
+ catch (cause) {
42
+ if (cancelled) {
43
+ return;
44
+ }
45
+ setError(errorMessage(cause));
46
+ }
47
+ finally {
48
+ if (!cancelled) {
49
+ setLoading(false);
50
+ }
51
+ }
52
+ })();
53
+ return () => {
54
+ cancelled = true;
55
+ };
56
+ }, []);
57
+ const updateEnabled = useCallback(async (nextEnabled) => {
58
+ setSaving(true);
59
+ try {
60
+ const state = await client.updateLifeOpsAppState({
61
+ enabled: nextEnabled,
62
+ });
63
+ setEnabled(state.enabled === true);
64
+ setError(null);
65
+ return state;
66
+ }
67
+ catch (cause) {
68
+ setError(errorMessage(cause));
69
+ throw cause;
70
+ }
71
+ finally {
72
+ setSaving(false);
73
+ }
74
+ }, []);
75
+ return {
76
+ enabled,
77
+ loading,
78
+ saving,
79
+ error,
80
+ refresh,
81
+ updateEnabled,
82
+ };
83
+ }
@@ -0,0 +1,8 @@
1
+ import type { LifeOpsCapabilitiesStatus } from "@elizaos/shared";
2
+ export declare function useLifeOpsCapabilitiesStatus(): {
3
+ readonly status: LifeOpsCapabilitiesStatus;
4
+ readonly loading: boolean;
5
+ readonly error: string;
6
+ readonly refresh: () => Promise<void>;
7
+ };
8
+ //# sourceMappingURL=useLifeOpsCapabilitiesStatus.d.ts.map