@elizaos/agent 2.0.0-alpha.441 → 2.0.0-alpha.501

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 (980) 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 -2
  3. package/apps/app-companion/src/components/companion/CompanionHeader.d.ts +3 -1
  4. package/apps/app-companion/src/components/companion/CompanionHeader.d.ts.map +1 -1
  5. package/apps/app-companion/src/components/companion/CompanionHeader.js +8 -2
  6. package/apps/app-companion/src/components/companion/CompanionPerformanceSettings.d.ts +2 -0
  7. package/apps/app-companion/src/components/companion/CompanionPerformanceSettings.d.ts.map +1 -0
  8. package/apps/app-companion/src/components/companion/CompanionPerformanceSettings.js +33 -0
  9. package/apps/app-companion/src/components/companion/CompanionSettingsPanel.d.ts +2 -0
  10. package/apps/app-companion/src/components/companion/CompanionSettingsPanel.d.ts.map +1 -0
  11. package/apps/app-companion/src/components/companion/CompanionSettingsPanel.js +7 -0
  12. package/apps/app-companion/src/components/companion/CompanionShell.d.ts.map +1 -1
  13. package/apps/app-companion/src/components/companion/CompanionShell.js +1 -1
  14. package/apps/app-companion/src/components/companion/CompanionView.d.ts.map +1 -1
  15. package/apps/app-companion/src/components/companion/CompanionView.js +6 -2
  16. package/apps/app-companion/src/types/render-modes.d.ts +4 -0
  17. package/apps/app-companion/src/types/render-modes.d.ts.map +1 -0
  18. package/apps/app-companion/src/types/render-modes.js +6 -0
  19. package/apps/app-elizamaker/src/drop-routes.d.ts.map +1 -1
  20. package/apps/app-elizamaker/src/drop-service.d.ts +1 -1
  21. package/apps/app-elizamaker/src/drop-service.d.ts.map +1 -1
  22. package/apps/app-elizamaker/src/og-tracker.d.ts.map +1 -1
  23. package/apps/app-elizamaker/src/og-tracker.js +1 -1
  24. package/apps/app-elizamaker/src/twitter-verify.js +1 -1
  25. package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
  26. package/apps/app-lifeops/src/actions/website-blocker.js +18 -16
  27. package/apps/app-lifeops/src/api/client-lifeops.d.ts +37 -75
  28. package/apps/app-lifeops/src/api/client-lifeops.d.ts.map +1 -1
  29. package/apps/app-lifeops/src/api/client-lifeops.js +119 -0
  30. package/apps/app-lifeops/src/inbox/channel-deep-links.d.ts +2 -4
  31. package/apps/app-lifeops/src/inbox/channel-deep-links.d.ts.map +1 -1
  32. package/apps/app-lifeops/src/inbox/channel-deep-links.js +8 -38
  33. package/apps/app-lifeops/src/inbox/message-fetcher.d.ts +1 -1
  34. package/apps/app-lifeops/src/inbox/message-fetcher.d.ts.map +1 -1
  35. package/apps/app-lifeops/src/inbox/message-fetcher.js +180 -77
  36. package/apps/app-lifeops/src/inbox/types.d.ts +1 -1
  37. package/apps/app-lifeops/src/inbox/types.d.ts.map +1 -1
  38. package/apps/app-lifeops/src/lifeops/browser-extension-store.d.ts.map +1 -1
  39. package/apps/app-lifeops/src/lifeops/browser-readiness.d.ts +16 -0
  40. package/apps/app-lifeops/src/lifeops/browser-readiness.d.ts.map +1 -0
  41. package/apps/app-lifeops/src/lifeops/browser-readiness.js +74 -0
  42. package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.d.ts.map +1 -1
  43. package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.js +1 -1
  44. package/apps/app-lifeops/src/lifeops/checkin/checkin-service.d.ts.map +1 -1
  45. package/apps/app-lifeops/src/lifeops/defaults.d.ts +1 -1
  46. package/apps/app-lifeops/src/lifeops/defaults.d.ts.map +1 -1
  47. package/apps/app-lifeops/src/lifeops/discord-desktop-cdp.d.ts +16 -0
  48. package/apps/app-lifeops/src/lifeops/discord-desktop-cdp.d.ts.map +1 -1
  49. package/apps/app-lifeops/src/lifeops/discord-desktop-cdp.js +217 -1
  50. package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.d.ts.map +1 -1
  51. package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.js +8 -3
  52. package/apps/app-lifeops/src/lifeops/feature-flags.types.d.ts.map +1 -1
  53. package/apps/app-lifeops/src/lifeops/goal-semantic-evaluator.js +1 -1
  54. package/apps/app-lifeops/src/lifeops/google-calendar.d.ts.map +1 -1
  55. package/apps/app-lifeops/src/lifeops/google-calendar.js +24 -31
  56. package/apps/app-lifeops/src/lifeops/google-drive.d.ts.map +1 -1
  57. package/apps/app-lifeops/src/lifeops/google-drive.js +7 -1
  58. package/apps/app-lifeops/src/lifeops/google-fetch.d.ts +1 -1
  59. package/apps/app-lifeops/src/lifeops/google-fetch.d.ts.map +1 -1
  60. package/apps/app-lifeops/src/lifeops/google-fetch.js +4 -6
  61. package/apps/app-lifeops/src/lifeops/google-gmail.d.ts.map +1 -1
  62. package/apps/app-lifeops/src/lifeops/google-gmail.js +50 -34
  63. package/apps/app-lifeops/src/lifeops/health-bridge.d.ts.map +1 -1
  64. package/apps/app-lifeops/src/lifeops/health-bridge.js +53 -10
  65. package/apps/app-lifeops/src/lifeops/health-connectors.d.ts +23 -0
  66. package/apps/app-lifeops/src/lifeops/health-connectors.d.ts.map +1 -0
  67. package/apps/app-lifeops/src/lifeops/health-connectors.js +962 -0
  68. package/apps/app-lifeops/src/lifeops/health-oauth.d.ts +62 -0
  69. package/apps/app-lifeops/src/lifeops/health-oauth.d.ts.map +1 -0
  70. package/apps/app-lifeops/src/lifeops/health-oauth.js +496 -0
  71. package/apps/app-lifeops/src/lifeops/payment-csv-import.d.ts.map +1 -1
  72. package/apps/app-lifeops/src/lifeops/payment-csv-import.js +1 -5
  73. package/apps/app-lifeops/src/lifeops/payment-recurrence.d.ts.map +1 -1
  74. package/apps/app-lifeops/src/lifeops/payment-recurrence.js +2 -1
  75. package/apps/app-lifeops/src/lifeops/payment-types.d.ts +8 -7
  76. package/apps/app-lifeops/src/lifeops/payment-types.d.ts.map +1 -1
  77. package/apps/app-lifeops/src/lifeops/priority-scoring.d.ts.map +1 -1
  78. package/apps/app-lifeops/src/lifeops/repository.d.ts +46 -10
  79. package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
  80. package/apps/app-lifeops/src/lifeops/repository.js +683 -65
  81. package/apps/app-lifeops/src/lifeops/schedule-insight.d.ts.map +1 -1
  82. package/apps/app-lifeops/src/lifeops/schedule-insight.js +2 -3
  83. package/apps/app-lifeops/src/lifeops/schema.d.ts +6403 -3831
  84. package/apps/app-lifeops/src/lifeops/schema.d.ts.map +1 -1
  85. package/apps/app-lifeops/src/lifeops/schema.js +105 -18
  86. package/apps/app-lifeops/src/lifeops/seed-routines.d.ts +1 -1
  87. package/apps/app-lifeops/src/lifeops/seed-routines.d.ts.map +1 -1
  88. package/apps/app-lifeops/src/lifeops/seed-routines.js +7 -2
  89. package/apps/app-lifeops/src/lifeops/service-constants.d.ts +15 -0
  90. package/apps/app-lifeops/src/lifeops/service-constants.d.ts.map +1 -1
  91. package/apps/app-lifeops/src/lifeops/service-constants.js +21 -3
  92. package/apps/app-lifeops/src/lifeops/service-helpers-browser.d.ts +1 -1
  93. package/apps/app-lifeops/src/lifeops/service-helpers-browser.d.ts.map +1 -1
  94. package/apps/app-lifeops/src/lifeops/service-helpers-browser.js +1 -1
  95. package/apps/app-lifeops/src/lifeops/service-helpers-misc.d.ts.map +1 -1
  96. package/apps/app-lifeops/src/lifeops/service-helpers-misc.js +5 -5
  97. package/apps/app-lifeops/src/lifeops/service-helpers-occurrence.d.ts.map +1 -1
  98. package/apps/app-lifeops/src/lifeops/service-helpers-occurrence.js +1 -1
  99. package/apps/app-lifeops/src/lifeops/service-helpers-reminder.d.ts +48 -1
  100. package/apps/app-lifeops/src/lifeops/service-helpers-reminder.d.ts.map +1 -1
  101. package/apps/app-lifeops/src/lifeops/service-helpers-reminder.js +191 -17
  102. package/apps/app-lifeops/src/lifeops/service-mixin-browser.d.ts.map +1 -1
  103. package/apps/app-lifeops/src/lifeops/service-mixin-browser.js +10 -7
  104. package/apps/app-lifeops/src/lifeops/service-mixin-calendar.d.ts.map +1 -1
  105. package/apps/app-lifeops/src/lifeops/service-mixin-calendar.js +4 -11
  106. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts.map +1 -1
  107. package/apps/app-lifeops/src/lifeops/service-mixin-core.js +5 -2
  108. package/apps/app-lifeops/src/lifeops/service-mixin-definitions.d.ts.map +1 -1
  109. package/apps/app-lifeops/src/lifeops/service-mixin-definitions.js +7 -6
  110. package/apps/app-lifeops/src/lifeops/service-mixin-discord.js +237 -32
  111. package/apps/app-lifeops/src/lifeops/service-mixin-drive.d.ts.map +1 -1
  112. package/apps/app-lifeops/src/lifeops/service-mixin-drive.js +6 -5
  113. package/apps/app-lifeops/src/lifeops/service-mixin-gmail.d.ts.map +1 -1
  114. package/apps/app-lifeops/src/lifeops/service-mixin-gmail.js +86 -31
  115. package/apps/app-lifeops/src/lifeops/service-mixin-goals.d.ts.map +1 -1
  116. package/apps/app-lifeops/src/lifeops/service-mixin-goals.js +14 -15
  117. package/apps/app-lifeops/src/lifeops/service-mixin-google.d.ts.map +1 -1
  118. package/apps/app-lifeops/src/lifeops/service-mixin-google.js +71 -51
  119. package/apps/app-lifeops/src/lifeops/service-mixin-health.js +528 -1
  120. package/apps/app-lifeops/src/lifeops/service-mixin-imessage.d.ts.map +1 -1
  121. package/apps/app-lifeops/src/lifeops/service-mixin-imessage.js +94 -6
  122. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts.map +1 -1
  123. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.js +9 -0
  124. package/apps/app-lifeops/src/lifeops/service-mixin-payments.d.ts +3 -0
  125. package/apps/app-lifeops/src/lifeops/service-mixin-payments.d.ts.map +1 -1
  126. package/apps/app-lifeops/src/lifeops/service-mixin-payments.js +93 -26
  127. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.d.ts.map +1 -1
  128. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.js +331 -167
  129. package/apps/app-lifeops/src/lifeops/service-mixin-scheduling.js +5 -10
  130. package/apps/app-lifeops/src/lifeops/service-mixin-screentime.js +372 -10
  131. package/apps/app-lifeops/src/lifeops/service-mixin-signal.js +179 -43
  132. package/apps/app-lifeops/src/lifeops/service-mixin-sleep.js +31 -1
  133. package/apps/app-lifeops/src/lifeops/service-mixin-status.d.ts.map +1 -1
  134. package/apps/app-lifeops/src/lifeops/service-mixin-status.js +82 -13
  135. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +1 -1
  136. package/apps/app-lifeops/src/lifeops/service-mixin-telegram.js +59 -12
  137. package/apps/app-lifeops/src/lifeops/service-mixin-whatsapp.js +165 -22
  138. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.d.ts.map +1 -1
  139. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.js +3 -0
  140. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts.map +1 -1
  141. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.js +4 -4
  142. package/apps/app-lifeops/src/lifeops/service-normalize-gmail.d.ts +3 -1
  143. package/apps/app-lifeops/src/lifeops/service-normalize-gmail.d.ts.map +1 -1
  144. package/apps/app-lifeops/src/lifeops/service-normalize-gmail.js +5 -3
  145. package/apps/app-lifeops/src/lifeops/service-normalize-health.d.ts.map +1 -1
  146. package/apps/app-lifeops/src/lifeops/service-normalize-health.js +4 -3
  147. package/apps/app-lifeops/src/lifeops/service-normalize-task.d.ts.map +1 -1
  148. package/apps/app-lifeops/src/lifeops/service-normalize-task.js +10 -1
  149. package/apps/app-lifeops/src/lifeops/service-normalize.d.ts.map +1 -1
  150. package/apps/app-lifeops/src/lifeops/service-normalize.js +3 -3
  151. package/apps/app-lifeops/src/lifeops/service-types.d.ts +1 -1
  152. package/apps/app-lifeops/src/lifeops/service-types.d.ts.map +1 -1
  153. package/apps/app-lifeops/src/lifeops/service.d.ts +92 -166
  154. package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
  155. package/apps/app-lifeops/src/lifeops/service.js +2 -2
  156. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts +7 -0
  157. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts.map +1 -1
  158. package/apps/app-lifeops/src/lifeops/signal-auth.js +50 -6
  159. package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts +7 -0
  160. package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts.map +1 -1
  161. package/apps/app-lifeops/src/lifeops/signal-local-client.js +95 -4
  162. package/apps/app-lifeops/src/lifeops/sleep-cycle.d.ts +7 -1
  163. package/apps/app-lifeops/src/lifeops/sleep-cycle.d.ts.map +1 -1
  164. package/apps/app-lifeops/src/lifeops/sleep-cycle.js +16 -6
  165. package/apps/app-lifeops/src/lifeops/sleep-episode-store.d.ts +2 -1
  166. package/apps/app-lifeops/src/lifeops/sleep-episode-store.d.ts.map +1 -1
  167. package/apps/app-lifeops/src/lifeops/sleep-episode-store.js +7 -3
  168. package/apps/app-lifeops/src/lifeops/social-taxonomy.d.ts.map +1 -1
  169. package/apps/app-lifeops/src/lifeops/social-taxonomy.js +68 -16
  170. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts.map +1 -1
  171. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.js +24 -14
  172. package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts.map +1 -1
  173. package/apps/app-lifeops/src/lifeops/telegram-auth.d.ts +8 -1
  174. package/apps/app-lifeops/src/lifeops/telegram-auth.d.ts.map +1 -1
  175. package/apps/app-lifeops/src/lifeops/telegram-auth.js +44 -5
  176. package/apps/app-lifeops/src/lifeops/telegram-local-client.d.ts +1 -0
  177. package/apps/app-lifeops/src/lifeops/telegram-local-client.d.ts.map +1 -1
  178. package/apps/app-lifeops/src/lifeops/telegram-local-client.js +141 -7
  179. package/apps/app-lifeops/src/lifeops/twilio.d.ts.map +1 -1
  180. package/apps/app-lifeops/src/lifeops/twilio.js +3 -1
  181. package/apps/app-lifeops/src/lifeops/whatsapp-client.d.ts.map +1 -1
  182. package/apps/app-lifeops/src/lifeops/whatsapp-client.js +7 -4
  183. package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
  184. package/apps/app-lifeops/src/lifeops/x-poster.js +3 -1
  185. package/apps/app-lifeops/src/lifeops/x-reader.d.ts.map +1 -1
  186. package/apps/app-lifeops/src/lifeops/x-reader.js +10 -3
  187. package/apps/app-lifeops/src/providers/website-blocker.js +2 -2
  188. package/apps/app-lifeops/src/public.d.ts +2 -2
  189. package/apps/app-lifeops/src/public.d.ts.map +1 -1
  190. package/apps/app-lifeops/src/public.js +2 -2
  191. package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
  192. package/apps/app-lifeops/src/routes/lifeops-routes.js +327 -92
  193. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
  194. package/apps/app-lifeops/src/routes/plugin.js +79 -50
  195. package/apps/app-lifeops/src/routes/sleep-routes.d.ts.map +1 -1
  196. package/apps/app-lifeops/src/website-blocker/access.d.ts +1 -1
  197. package/apps/app-lifeops/src/website-blocker/access.d.ts.map +1 -1
  198. package/apps/app-lifeops/src/website-blocker/access.js +13 -9
  199. package/apps/app-lifeops/src/website-blocker/engine.d.ts.map +1 -1
  200. package/apps/app-lifeops/src/website-blocker/engine.js +23 -2
  201. package/apps/app-lifeops/src/website-blocker/public.d.ts +4 -4
  202. package/apps/app-lifeops/src/website-blocker/public.d.ts.map +1 -1
  203. package/apps/app-lifeops/src/website-blocker/public.js +2 -2
  204. package/apps/app-lifeops/src/website-blocker/roles.d.ts +2 -4
  205. package/apps/app-lifeops/src/website-blocker/roles.d.ts.map +1 -1
  206. package/apps/app-lifeops/src/website-blocker/roles.js +1 -4
  207. package/apps/app-steward/src/actions/check-balance.d.ts.map +1 -1
  208. package/apps/app-steward/src/actions/wallet-action-shared.d.ts.map +1 -1
  209. package/apps/app-steward/src/actions/wallet-action-shared.js +1 -1
  210. package/apps/app-steward/src/api/wallet-evm-balance.d.ts.map +1 -1
  211. package/apps/app-steward/src/browser-workspace-wallet.d.ts +15 -1
  212. package/apps/app-steward/src/browser-workspace-wallet.d.ts.map +1 -1
  213. package/apps/app-steward/src/browser-workspace-wallet.js +7 -1
  214. package/apps/app-steward/src/index.d.ts +4 -4
  215. package/apps/app-steward/src/index.d.ts.map +1 -1
  216. package/apps/app-steward/src/index.js +4 -4
  217. package/apps/app-steward/src/routes/steward-bridge.d.ts.map +1 -1
  218. package/apps/app-steward/src/routes/steward-bridge.js +1 -1
  219. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts.map +1 -1
  220. package/apps/app-steward/src/routes/wallet-browser-compat-routes.js +88 -1
  221. package/apps/app-training/src/backends/atropos.d.ts.map +1 -1
  222. package/apps/app-training/src/backends/atropos.js +2 -2
  223. package/apps/app-training/src/backends/native.d.ts +1 -1
  224. package/apps/app-training/src/backends/native.d.ts.map +1 -1
  225. package/apps/app-training/src/backends/tinker.d.ts.map +1 -1
  226. package/apps/app-training/src/core/index.d.ts +5 -5
  227. package/apps/app-training/src/core/index.d.ts.map +1 -1
  228. package/apps/app-training/src/core/index.js +4 -4
  229. package/apps/app-training/src/core/privacy-filter.d.ts.map +1 -1
  230. package/apps/app-training/src/core/training-orchestrator.d.ts.map +1 -1
  231. package/apps/app-training/src/optimizers/bootstrap-fewshot.d.ts.map +1 -1
  232. package/apps/app-training/src/optimizers/bootstrap-fewshot.js +7 -3
  233. package/apps/app-training/src/optimizers/index.d.ts +4 -4
  234. package/apps/app-training/src/optimizers/index.d.ts.map +1 -1
  235. package/apps/app-training/src/optimizers/index.js +2 -2
  236. package/apps/app-training/src/optimizers/instruction-search.d.ts.map +1 -1
  237. package/apps/app-training/src/optimizers/instruction-search.js +6 -1
  238. package/apps/app-training/src/optimizers/prompt-evolution.d.ts.map +1 -1
  239. package/apps/app-training/src/optimizers/prompt-evolution.js +6 -1
  240. package/apps/app-training/src/optimizers/scoring.d.ts +5 -7
  241. package/apps/app-training/src/optimizers/scoring.d.ts.map +1 -1
  242. package/apps/app-training/src/optimizers/types.d.ts.map +1 -1
  243. package/apps/app-training/src/routes/index.d.ts +1 -1
  244. package/apps/app-training/src/routes/index.d.ts.map +1 -1
  245. package/apps/app-training/src/routes/index.js +1 -1
  246. package/apps/app-training/src/services/index.d.ts +3 -3
  247. package/apps/app-training/src/services/index.d.ts.map +1 -1
  248. package/apps/app-training/src/services/index.js +2 -2
  249. package/apps/app-training/src/services/training-trigger.d.ts.map +1 -1
  250. package/package.json +4 -4
  251. package/packages/agent/src/actions/browser-session.d.ts.map +1 -1
  252. package/packages/agent/src/actions/browser-session.js +73 -5
  253. package/packages/agent/src/actions/extract-page.d.ts.map +1 -1
  254. package/packages/agent/src/actions/extract-page.js +11 -3
  255. package/packages/agent/src/actions/launchpad-launch.d.ts +16 -0
  256. package/packages/agent/src/actions/launchpad-launch.d.ts.map +1 -0
  257. package/packages/agent/src/actions/launchpad-launch.js +207 -0
  258. package/packages/agent/src/actions/logs.d.ts.map +1 -1
  259. package/packages/agent/src/actions/logs.js +19 -2
  260. package/packages/agent/src/actions/manage-tasks.d.ts.map +1 -1
  261. package/packages/agent/src/actions/manage-tasks.js +55 -0
  262. package/packages/agent/src/actions/page-action-groups.d.ts +17 -0
  263. package/packages/agent/src/actions/page-action-groups.d.ts.map +1 -0
  264. package/packages/agent/src/actions/page-action-groups.js +171 -0
  265. package/packages/agent/src/actions/scratchpad.d.ts.map +1 -1
  266. package/packages/agent/src/actions/scratchpad.js +17 -2
  267. package/packages/agent/src/actions/web-search.d.ts.map +1 -1
  268. package/packages/agent/src/actions/web-search.js +10 -2
  269. package/packages/agent/src/api/accounts-routes.d.ts.map +1 -1
  270. package/packages/agent/src/api/accounts-routes.js +8 -10
  271. package/packages/agent/src/api/chat-augmentation.d.ts.map +1 -1
  272. package/packages/agent/src/api/chat-augmentation.js +18 -6
  273. package/packages/agent/src/api/cloud-relay-routes.d.ts.map +1 -1
  274. package/packages/agent/src/api/cloud-relay-routes.js +3 -2
  275. package/packages/agent/src/api/cloud-routes.d.ts +3 -0
  276. package/packages/agent/src/api/cloud-routes.d.ts.map +1 -1
  277. package/packages/agent/src/api/cloud-routes.js +54 -1
  278. package/packages/agent/src/api/cloud-status-routes.d.ts.map +1 -1
  279. package/packages/agent/src/api/cloud-status-routes.js +25 -15
  280. package/packages/agent/src/api/connector-routes.d.ts +8 -0
  281. package/packages/agent/src/api/connector-routes.d.ts.map +1 -1
  282. package/packages/agent/src/api/connector-routes.js +25 -1
  283. package/packages/agent/src/api/experience-routes.d.ts.map +1 -1
  284. package/packages/agent/src/api/experience-routes.js +57 -0
  285. package/packages/agent/src/api/index.d.ts +1 -1
  286. package/packages/agent/src/api/index.d.ts.map +1 -1
  287. package/packages/agent/src/api/index.js +5 -5
  288. package/packages/agent/src/api/provider-switch-config.d.ts +4 -1
  289. package/packages/agent/src/api/provider-switch-config.d.ts.map +1 -1
  290. package/packages/agent/src/api/provider-switch-config.js +8 -1
  291. package/packages/agent/src/api/provider-switch-routes.d.ts +7 -1
  292. package/packages/agent/src/api/provider-switch-routes.d.ts.map +1 -1
  293. package/packages/agent/src/api/provider-switch-routes.js +62 -27
  294. package/packages/agent/src/api/runtime-plugin-routes.d.ts +5 -0
  295. package/packages/agent/src/api/runtime-plugin-routes.d.ts.map +1 -1
  296. package/packages/agent/src/api/runtime-plugin-routes.js +13 -0
  297. package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -1
  298. package/packages/agent/src/api/server-helpers-auth.js +7 -0
  299. package/packages/agent/src/api/server.d.ts.map +1 -1
  300. package/packages/agent/src/api/server.js +73 -11
  301. package/packages/agent/src/api/subscription-routes.d.ts.map +1 -1
  302. package/packages/agent/src/api/subscription-routes.js +6 -2
  303. package/packages/agent/src/auth/credentials.d.ts.map +1 -1
  304. package/packages/agent/src/auth/credentials.js +6 -2
  305. package/packages/agent/src/autonomy/index.d.ts.map +1 -1
  306. package/packages/agent/src/autonomy/index.js +5 -3
  307. package/packages/agent/src/bin.js +25 -0
  308. package/packages/agent/src/cli/index.d.ts.map +1 -1
  309. package/packages/agent/src/cli/index.js +17 -1
  310. package/packages/agent/src/cloud/cloud-manager.d.ts +1 -0
  311. package/packages/agent/src/cloud/cloud-manager.d.ts.map +1 -1
  312. package/packages/agent/src/cloud/cloud-manager.js +9 -0
  313. package/packages/agent/src/providers/page-scoped-context.d.ts.map +1 -1
  314. package/packages/agent/src/providers/page-scoped-context.js +48 -8
  315. package/packages/agent/src/runtime/aosp-llama-adapter.d.ts +193 -0
  316. package/packages/agent/src/runtime/aosp-llama-adapter.d.ts.map +1 -0
  317. package/packages/agent/src/runtime/aosp-llama-adapter.js +938 -0
  318. package/packages/agent/src/runtime/aosp-local-inference-bootstrap.d.ts +42 -0
  319. package/packages/agent/src/runtime/aosp-local-inference-bootstrap.d.ts.map +1 -0
  320. package/packages/agent/src/runtime/aosp-local-inference-bootstrap.js +299 -0
  321. package/packages/agent/src/runtime/core-plugins.d.ts +20 -0
  322. package/packages/agent/src/runtime/core-plugins.d.ts.map +1 -1
  323. package/packages/agent/src/runtime/core-plugins.js +22 -2
  324. package/packages/agent/src/runtime/discord-local-plugin.d.ts.map +1 -1
  325. package/packages/agent/src/runtime/discord-local-plugin.js +36 -0
  326. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
  327. package/packages/agent/src/runtime/eliza-plugin.js +9 -0
  328. package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
  329. package/packages/agent/src/runtime/eliza.js +18 -8
  330. package/packages/agent/src/runtime/first-time-setup.d.ts +1 -0
  331. package/packages/agent/src/runtime/first-time-setup.d.ts.map +1 -1
  332. package/packages/agent/src/runtime/first-time-setup.js +1 -0
  333. package/packages/agent/src/runtime/operations/classifier.d.ts +36 -0
  334. package/packages/agent/src/runtime/operations/classifier.d.ts.map +1 -0
  335. package/packages/agent/src/runtime/operations/classifier.js +72 -0
  336. package/packages/agent/src/runtime/operations/cold-strategy.d.ts +19 -0
  337. package/packages/agent/src/runtime/operations/cold-strategy.d.ts.map +1 -0
  338. package/packages/agent/src/runtime/operations/cold-strategy.js +83 -0
  339. package/packages/agent/src/runtime/operations/health-checks.d.ts +24 -0
  340. package/packages/agent/src/runtime/operations/health-checks.d.ts.map +1 -0
  341. package/packages/agent/src/runtime/operations/health-checks.js +186 -0
  342. package/packages/agent/src/runtime/operations/health.d.ts +32 -0
  343. package/packages/agent/src/runtime/operations/health.d.ts.map +1 -0
  344. package/packages/agent/src/runtime/operations/health.js +151 -0
  345. package/packages/agent/src/runtime/operations/index.d.ts +16 -0
  346. package/packages/agent/src/runtime/operations/index.d.ts.map +1 -0
  347. package/packages/agent/src/runtime/operations/index.js +14 -0
  348. package/packages/agent/src/runtime/operations/manager.d.ts +68 -0
  349. package/packages/agent/src/runtime/operations/manager.d.ts.map +1 -0
  350. package/packages/agent/src/runtime/operations/manager.js +182 -0
  351. package/packages/agent/src/runtime/operations/reload-hot.d.ts +40 -0
  352. package/packages/agent/src/runtime/operations/reload-hot.d.ts.map +1 -0
  353. package/packages/agent/src/runtime/operations/reload-hot.js +176 -0
  354. package/packages/agent/src/runtime/operations/repository.d.ts +44 -0
  355. package/packages/agent/src/runtime/operations/repository.d.ts.map +1 -0
  356. package/packages/agent/src/runtime/operations/repository.js +233 -0
  357. package/packages/agent/src/runtime/operations/types.d.ts +201 -0
  358. package/packages/agent/src/runtime/operations/types.d.ts.map +1 -0
  359. package/packages/agent/src/runtime/operations/types.js +30 -0
  360. package/packages/agent/src/runtime/plugin-collector.d.ts.map +1 -1
  361. package/packages/agent/src/runtime/plugin-collector.js +47 -7
  362. package/packages/agent/src/runtime/plugin-role-gating.d.ts.map +1 -1
  363. package/packages/agent/src/runtime/plugin-role-gating.js +42 -9
  364. package/packages/agent/src/runtime/restart.d.ts +14 -38
  365. package/packages/agent/src/runtime/restart.d.ts.map +1 -1
  366. package/packages/agent/src/runtime/restart.js +14 -39
  367. package/packages/agent/src/services/browser-workspace-desktop.d.ts.map +1 -1
  368. package/packages/agent/src/services/browser-workspace-desktop.js +107 -0
  369. package/packages/agent/src/services/browser-workspace-types.d.ts +7 -1
  370. package/packages/agent/src/services/browser-workspace-types.d.ts.map +1 -1
  371. package/packages/agent/src/services/browser-workspace.d.ts.map +1 -1
  372. package/packages/agent/src/services/browser-workspace.js +7 -0
  373. package/packages/agent/src/services/index.d.ts +1 -0
  374. package/packages/agent/src/services/index.d.ts.map +1 -1
  375. package/packages/agent/src/services/index.js +1 -0
  376. package/packages/agent/src/services/launchpads/image-generator.d.ts +22 -0
  377. package/packages/agent/src/services/launchpads/image-generator.d.ts.map +1 -0
  378. package/packages/agent/src/services/launchpads/image-generator.js +46 -0
  379. package/packages/agent/src/services/launchpads/launchpad-engine.d.ts +32 -0
  380. package/packages/agent/src/services/launchpads/launchpad-engine.d.ts.map +1 -0
  381. package/packages/agent/src/services/launchpads/launchpad-engine.js +191 -0
  382. package/packages/agent/src/services/launchpads/launchpad-types.d.ts +116 -0
  383. package/packages/agent/src/services/launchpads/launchpad-types.d.ts.map +1 -0
  384. package/packages/agent/src/services/launchpads/launchpad-types.js +19 -0
  385. package/packages/agent/src/services/launchpads/metadata-generator.d.ts +24 -0
  386. package/packages/agent/src/services/launchpads/metadata-generator.d.ts.map +1 -0
  387. package/packages/agent/src/services/launchpads/metadata-generator.js +96 -0
  388. package/packages/agent/src/services/launchpads/profiles/flap-sh.d.ts +25 -0
  389. package/packages/agent/src/services/launchpads/profiles/flap-sh.d.ts.map +1 -0
  390. package/packages/agent/src/services/launchpads/profiles/flap-sh.js +80 -0
  391. package/packages/agent/src/services/launchpads/profiles/four-meme.d.ts +11 -0
  392. package/packages/agent/src/services/launchpads/profiles/four-meme.d.ts.map +1 -0
  393. package/packages/agent/src/services/launchpads/profiles/four-meme.js +70 -0
  394. package/packages/agent/src/services/registry-client.js +1 -1
  395. package/packages/agent/src/services/research-task-executor.d.ts.map +1 -1
  396. package/packages/agent/src/services/research-task-executor.js +3 -1
  397. package/packages/app-core/src/App.d.ts.map +1 -1
  398. package/packages/app-core/src/App.js +6 -8
  399. package/packages/app-core/src/api/auth/sessions.js +1 -1
  400. package/packages/app-core/src/api/auth/tokens.d.ts +3 -0
  401. package/packages/app-core/src/api/auth/tokens.d.ts.map +1 -0
  402. package/packages/app-core/src/api/auth/tokens.js +13 -0
  403. package/packages/app-core/src/api/auth.d.ts +1 -3
  404. package/packages/app-core/src/api/auth.d.ts.map +1 -1
  405. package/packages/app-core/src/api/auth.js +2 -16
  406. package/packages/app-core/src/api/client-agent.d.ts +14 -3
  407. package/packages/app-core/src/api/client-agent.d.ts.map +1 -1
  408. package/packages/app-core/src/api/client-agent.js +74 -1
  409. package/packages/app-core/src/api/client-base.d.ts.map +1 -1
  410. package/packages/app-core/src/api/client-base.js +34 -2
  411. package/packages/app-core/src/api/client-cloud.d.ts +5 -1
  412. package/packages/app-core/src/api/client-cloud.d.ts.map +1 -1
  413. package/packages/app-core/src/api/client-cloud.js +9 -2
  414. package/packages/app-core/src/api/client-types-chat.d.ts +8 -0
  415. package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -1
  416. package/packages/app-core/src/api/client-types-cloud.d.ts +2 -0
  417. package/packages/app-core/src/api/client-types-cloud.d.ts.map +1 -1
  418. package/packages/app-core/src/api/client-types-config.d.ts +1 -1
  419. package/packages/app-core/src/api/client-types-config.d.ts.map +1 -1
  420. package/packages/app-core/src/api/client-types-core.d.ts +1 -1
  421. package/packages/app-core/src/api/client-types-core.d.ts.map +1 -1
  422. package/packages/app-core/src/api/client-types-experience.d.ts +50 -0
  423. package/packages/app-core/src/api/client-types-experience.d.ts.map +1 -1
  424. package/packages/app-core/src/api/client-wallet.d.ts +7 -1
  425. package/packages/app-core/src/api/client-wallet.d.ts.map +1 -1
  426. package/packages/app-core/src/api/client-wallet.js +6 -0
  427. package/packages/app-core/src/components/accounts/AccountCard.d.ts.map +1 -1
  428. package/packages/app-core/src/components/accounts/AccountCard.js +5 -3
  429. package/packages/app-core/src/components/accounts/AccountList.d.ts.map +1 -1
  430. package/packages/app-core/src/components/accounts/AccountList.js +1 -9
  431. package/packages/app-core/src/components/accounts/AddAccountDialog.d.ts.map +1 -1
  432. package/packages/app-core/src/components/accounts/AddAccountDialog.js +2 -27
  433. package/packages/app-core/src/components/accounts/RotationStrategyPicker.d.ts.map +1 -1
  434. package/packages/app-core/src/components/accounts/RotationStrategyPicker.js +0 -5
  435. package/packages/app-core/src/components/apps/AppsCatalogGrid.js +1 -1
  436. package/packages/app-core/src/components/apps/app-identity.d.ts +8 -0
  437. package/packages/app-core/src/components/apps/app-identity.d.ts.map +1 -1
  438. package/packages/app-core/src/components/apps/app-identity.js +23 -2
  439. package/packages/app-core/src/components/apps/catalog-loader.d.ts.map +1 -1
  440. package/packages/app-core/src/components/apps/catalog-loader.js +10 -1
  441. package/packages/app-core/src/components/apps/helpers.d.ts +5 -2
  442. package/packages/app-core/src/components/apps/helpers.d.ts.map +1 -1
  443. package/packages/app-core/src/components/apps/helpers.js +14 -3
  444. package/packages/app-core/src/components/apps/overlay-app-registry.d.ts.map +1 -1
  445. package/packages/app-core/src/components/apps/overlay-app-registry.js +13 -2
  446. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.d.ts.map +1 -1
  447. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.js +220 -3
  448. package/packages/app-core/src/components/character/character-hub-helpers.d.ts.map +1 -1
  449. package/packages/app-core/src/components/character/character-hub-helpers.js +4 -0
  450. package/packages/app-core/src/components/character/character-hub-types.d.ts +4 -0
  451. package/packages/app-core/src/components/character/character-hub-types.d.ts.map +1 -1
  452. package/packages/app-core/src/components/chat/AppsSection.d.ts.map +1 -1
  453. package/packages/app-core/src/components/chat/AppsSection.js +24 -1
  454. package/packages/app-core/src/components/chat/TasksEventsPanel.d.ts.map +1 -1
  455. package/packages/app-core/src/components/chat/TasksEventsPanel.js +1 -1
  456. package/packages/app-core/src/components/connectors/ConnectorModeSelector.d.ts +35 -0
  457. package/packages/app-core/src/components/connectors/ConnectorModeSelector.d.ts.map +1 -0
  458. package/packages/app-core/src/components/connectors/ConnectorModeSelector.js +150 -0
  459. package/packages/app-core/src/components/conversations/ConversationsSidebar.d.ts.map +1 -1
  460. package/packages/app-core/src/components/conversations/ConversationsSidebar.js +8 -6
  461. package/packages/app-core/src/components/custom-actions/custom-action-form.d.ts +1 -1
  462. package/packages/app-core/src/components/custom-actions/custom-action-form.d.ts.map +1 -1
  463. package/packages/app-core/src/components/custom-actions/custom-action-form.js +1 -1
  464. package/packages/app-core/src/components/local-inference/LocalInferencePanel.d.ts.map +1 -1
  465. package/packages/app-core/src/components/local-inference/LocalInferencePanel.js +1 -3
  466. package/packages/app-core/src/components/local-inference/ProvidersList.d.ts +0 -13
  467. package/packages/app-core/src/components/local-inference/ProvidersList.d.ts.map +1 -1
  468. package/packages/app-core/src/components/local-inference/ProvidersList.js +10 -21
  469. package/packages/app-core/src/components/local-inference/RoutingMatrix.d.ts +0 -11
  470. package/packages/app-core/src/components/local-inference/RoutingMatrix.d.ts.map +1 -1
  471. package/packages/app-core/src/components/local-inference/RoutingMatrix.js +21 -18
  472. package/packages/app-core/src/components/local-inference/SlotAssignments.d.ts.map +1 -1
  473. package/packages/app-core/src/components/local-inference/SlotAssignments.js +11 -11
  474. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts +5 -2
  475. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts.map +1 -1
  476. package/packages/app-core/src/components/onboarding/BootstrapStep.js +54 -6
  477. package/packages/app-core/src/components/pages/AppDetailsView.d.ts +4 -6
  478. package/packages/app-core/src/components/pages/AppDetailsView.d.ts.map +1 -1
  479. package/packages/app-core/src/components/pages/AppDetailsView.js +109 -54
  480. package/packages/app-core/src/components/pages/AppsView.d.ts.map +1 -1
  481. package/packages/app-core/src/components/pages/AppsView.js +33 -53
  482. package/packages/app-core/src/components/pages/AutomationsView.d.ts.map +1 -1
  483. package/packages/app-core/src/components/pages/AutomationsView.js +6 -22
  484. package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts +14 -0
  485. package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts.map +1 -1
  486. package/packages/app-core/src/components/pages/BrowserWorkspaceView.js +462 -45
  487. package/packages/app-core/src/components/pages/ChatView.d.ts.map +1 -1
  488. package/packages/app-core/src/components/pages/ChatView.js +1 -1
  489. package/packages/app-core/src/components/pages/ConfigPageView.js +2 -2
  490. package/packages/app-core/src/components/pages/InventoryView.js +4 -4
  491. package/packages/app-core/src/components/pages/KnowledgeView.js +1 -1
  492. package/packages/app-core/src/components/pages/LogsView.d.ts.map +1 -1
  493. package/packages/app-core/src/components/pages/LogsView.js +0 -4
  494. package/packages/app-core/src/components/pages/SecretsView.js +1 -1
  495. package/packages/app-core/src/components/pages/SettingsView.d.ts.map +1 -1
  496. package/packages/app-core/src/components/pages/SettingsView.js +76 -176
  497. package/packages/app-core/src/components/pages/WorkflowGraphViewer.js +1 -1
  498. package/packages/app-core/src/components/pages/page-scoped-conversations.d.ts +1 -1
  499. package/packages/app-core/src/components/pages/page-scoped-conversations.d.ts.map +1 -1
  500. package/packages/app-core/src/components/pages/page-scoped-conversations.js +62 -7
  501. package/packages/app-core/src/components/pages/plugin-list-utils.d.ts.map +1 -1
  502. package/packages/app-core/src/components/pages/plugin-list-utils.js +0 -1
  503. package/packages/app-core/src/components/pages/plugin-view-connectors.d.ts.map +1 -1
  504. package/packages/app-core/src/components/pages/plugin-view-connectors.js +12 -4
  505. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.d.ts.map +1 -1
  506. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.js +41 -0
  507. package/packages/app-core/src/components/settings/AppearanceSettingsSection.d.ts.map +1 -1
  508. package/packages/app-core/src/components/settings/AppearanceSettingsSection.js +3 -42
  509. package/packages/app-core/src/components/settings/ProviderSwitcher.d.ts.map +1 -1
  510. package/packages/app-core/src/components/settings/ProviderSwitcher.js +74 -39
  511. package/packages/app-core/src/components/settings/SubscriptionStatus.d.ts.map +1 -1
  512. package/packages/app-core/src/components/settings/SubscriptionStatus.js +2 -2
  513. package/packages/app-core/src/components/settings/permission-controls.d.ts.map +1 -1
  514. package/packages/app-core/src/components/settings/permission-controls.js +41 -7
  515. package/packages/app-core/src/components/shell/BugReportModal.js +2 -2
  516. package/packages/app-core/src/components/shell/CommandPalette.d.ts.map +1 -1
  517. package/packages/app-core/src/components/shell/CommandPalette.js +3 -3
  518. package/packages/app-core/src/components/shell/Header.js +2 -2
  519. package/packages/app-core/src/components/shell/RuntimeGate.d.ts.map +1 -1
  520. package/packages/app-core/src/components/shell/RuntimeGate.js +309 -57
  521. package/packages/app-core/src/components/shell/StartupShell.js +2 -2
  522. package/packages/app-core/src/components/workspace/AppWorkspaceChrome.js +2 -2
  523. package/packages/app-core/src/config/boot-config-store.d.ts +35 -6
  524. package/packages/app-core/src/config/boot-config-store.d.ts.map +1 -1
  525. package/packages/app-core/src/hooks/useAccounts.d.ts +1 -1
  526. package/packages/app-core/src/hooks/useAccounts.d.ts.map +1 -1
  527. package/packages/app-core/src/hooks/voice-chat-playback.d.ts.map +1 -1
  528. package/packages/app-core/src/hooks/voice-chat-playback.js +2 -2
  529. package/packages/app-core/src/i18n/locales/en.json +229 -210
  530. package/packages/app-core/src/i18n/locales/es.json +255 -236
  531. package/packages/app-core/src/i18n/locales/ko.json +255 -236
  532. package/packages/app-core/src/i18n/locales/pt.json +255 -236
  533. package/packages/app-core/src/i18n/locales/tl.json +254 -235
  534. package/packages/app-core/src/i18n/locales/vi.json +255 -236
  535. package/packages/app-core/src/i18n/locales/zh-CN.json +255 -236
  536. package/packages/app-core/src/onboarding/mobile-runtime-mode.d.ts +1 -1
  537. package/packages/app-core/src/onboarding/mobile-runtime-mode.d.ts.map +1 -1
  538. package/packages/app-core/src/onboarding/mobile-runtime-mode.js +3 -0
  539. package/packages/app-core/src/onboarding/probe-local-agent.d.ts +44 -0
  540. package/packages/app-core/src/onboarding/probe-local-agent.d.ts.map +1 -0
  541. package/packages/app-core/src/onboarding/probe-local-agent.js +126 -0
  542. package/packages/app-core/src/onboarding-config.d.ts +1 -0
  543. package/packages/app-core/src/onboarding-config.d.ts.map +1 -1
  544. package/packages/app-core/src/onboarding-config.js +3 -0
  545. package/packages/app-core/src/platform/init.d.ts +8 -0
  546. package/packages/app-core/src/platform/init.d.ts.map +1 -1
  547. package/packages/app-core/src/platform/init.js +10 -0
  548. package/packages/app-core/src/services/account-pool.d.ts +98 -0
  549. package/packages/app-core/src/services/account-pool.d.ts.map +1 -0
  550. package/packages/app-core/src/services/account-pool.js +506 -0
  551. package/packages/app-core/src/services/account-usage.d.ts +75 -0
  552. package/packages/app-core/src/services/account-usage.d.ts.map +1 -0
  553. package/packages/app-core/src/services/account-usage.js +179 -0
  554. package/packages/app-core/src/services/local-inference/active-model.d.ts +14 -0
  555. package/packages/app-core/src/services/local-inference/active-model.d.ts.map +1 -1
  556. package/packages/app-core/src/services/local-inference/device-bridge.d.ts +7 -0
  557. package/packages/app-core/src/services/local-inference/device-bridge.d.ts.map +1 -1
  558. package/packages/app-core/src/services/local-inference/device-bridge.js +108 -3
  559. package/packages/app-core/src/services/local-inference/paths.d.ts +9 -2
  560. package/packages/app-core/src/services/local-inference/paths.d.ts.map +1 -1
  561. package/packages/app-core/src/services/local-inference/paths.js +10 -3
  562. package/packages/app-core/src/services/local-inference/providers.d.ts +1 -1
  563. package/packages/app-core/src/services/local-inference/providers.d.ts.map +1 -1
  564. package/packages/app-core/src/services/local-inference/providers.js +46 -0
  565. package/packages/app-core/src/services/local-inference/routing-preferences.d.ts +3 -1
  566. package/packages/app-core/src/services/local-inference/routing-preferences.d.ts.map +1 -1
  567. package/packages/app-core/src/services/local-inference/routing-preferences.js +1 -0
  568. package/packages/app-core/src/services/local-inference/types.d.ts +1 -1
  569. package/packages/app-core/src/services/local-inference/types.d.ts.map +1 -1
  570. package/packages/app-core/src/shell/AppWindowRenderer.d.ts.map +1 -1
  571. package/packages/app-core/src/shell/AppWindowRenderer.js +14 -26
  572. package/packages/app-core/src/state/AppContext.d.ts +1 -1
  573. package/packages/app-core/src/state/AppContext.d.ts.map +1 -1
  574. package/packages/app-core/src/state/AppContext.js +1 -1
  575. package/packages/app-core/src/state/connector-deeplink.d.ts +30 -0
  576. package/packages/app-core/src/state/connector-deeplink.d.ts.map +1 -0
  577. package/packages/app-core/src/state/connector-deeplink.js +46 -0
  578. package/packages/app-core/src/state/index.d.ts +1 -0
  579. package/packages/app-core/src/state/index.d.ts.map +1 -1
  580. package/packages/app-core/src/state/index.js +1 -0
  581. package/packages/app-core/src/state/useCloudState.d.ts.map +1 -1
  582. package/packages/app-core/src/state/useCloudState.js +4 -1
  583. package/packages/app-core/src/state/useMiscUiState.js +1 -1
  584. package/packages/app-core/src/utils/asset-url.d.ts.map +1 -1
  585. package/packages/app-core/src/utils/asset-url.js +14 -1
  586. package/packages/app-core/src/utils/browser-tabs-renderer-registry.d.ts +56 -0
  587. package/packages/app-core/src/utils/browser-tabs-renderer-registry.d.ts.map +1 -0
  588. package/packages/app-core/src/utils/browser-tabs-renderer-registry.js +738 -0
  589. package/packages/app-core/src/utils/errors.d.ts +13 -0
  590. package/packages/app-core/src/utils/errors.d.ts.map +1 -0
  591. package/packages/app-core/src/utils/errors.js +25 -0
  592. package/packages/shared/src/connector-cred-types.d.ts +27 -0
  593. package/packages/shared/src/connector-cred-types.d.ts.map +1 -0
  594. package/packages/shared/src/connector-cred-types.js +63 -0
  595. package/packages/shared/src/contracts/apps.d.ts.map +1 -1
  596. package/packages/shared/src/contracts/apps.js +10 -0
  597. package/packages/shared/src/contracts/lifeops-extensions.d.ts +145 -0
  598. package/packages/shared/src/contracts/lifeops-extensions.d.ts.map +1 -1
  599. package/packages/shared/src/contracts/lifeops-extensions.js +6 -0
  600. package/packages/shared/src/contracts/lifeops.d.ts +265 -25
  601. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  602. package/packages/shared/src/contracts/lifeops.js +56 -0
  603. package/packages/shared/src/contracts/service-routing.d.ts +1 -0
  604. package/packages/shared/src/contracts/service-routing.d.ts.map +1 -1
  605. package/packages/shared/src/contracts/service-routing.js +3 -0
  606. package/packages/shared/src/index.d.ts +1 -0
  607. package/packages/shared/src/index.d.ts.map +1 -1
  608. package/packages/shared/src/index.js +1 -0
  609. package/packages/shared/src/runtime-env.d.ts +2 -0
  610. package/packages/shared/src/runtime-env.d.ts.map +1 -1
  611. package/packages/shared/src/runtime-env.js +20 -0
  612. package/packages/shared/src/spoken-text.js +2 -2
  613. package/packages/typescript/src/action-docs.d.ts +4 -0
  614. package/packages/typescript/src/action-docs.d.ts.map +1 -1
  615. package/packages/typescript/src/action-docs.js +29 -5
  616. package/packages/typescript/src/actions.d.ts.map +1 -1
  617. package/packages/typescript/src/actions.js +19 -3
  618. package/packages/typescript/src/features/advanced-capabilities/actions/removeContact.d.ts.map +1 -1
  619. package/packages/typescript/src/features/advanced-capabilities/actions/removeContact.js +23 -4
  620. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.d.ts.map +1 -1
  621. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.js +2 -0
  622. package/packages/typescript/src/features/advanced-capabilities/actions/searchContacts.d.ts.map +1 -1
  623. package/packages/typescript/src/features/advanced-capabilities/actions/searchContacts.js +2 -0
  624. package/packages/typescript/src/features/advanced-capabilities/actions/updateContact.d.ts.map +1 -1
  625. package/packages/typescript/src/features/advanced-capabilities/actions/updateContact.js +23 -3
  626. package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/read-attachment.d.ts.map +1 -1
  627. package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/read-attachment.js +9 -1
  628. package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/read-file.d.ts.map +1 -1
  629. package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/read-file.js +4 -0
  630. package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/save-attachment-to-clipboard.d.ts.map +1 -1
  631. package/packages/typescript/src/features/advanced-capabilities/clipboard/actions/save-attachment-to-clipboard.js +8 -1
  632. package/packages/typescript/src/features/advanced-capabilities/clipboard/types.d.ts +1 -1
  633. package/packages/typescript/src/features/advanced-capabilities/clipboard/types.d.ts.map +1 -1
  634. package/packages/typescript/src/features/advanced-capabilities/evaluators/factExtractor.js +2 -2
  635. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.d.ts.map +1 -1
  636. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.js +1 -0
  637. package/packages/typescript/src/features/advanced-capabilities/experience/actions/search-experiences.d.ts +3 -0
  638. package/packages/typescript/src/features/advanced-capabilities/experience/actions/search-experiences.d.ts.map +1 -0
  639. package/packages/typescript/src/features/advanced-capabilities/experience/actions/search-experiences.js +110 -0
  640. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.d.ts.map +1 -1
  641. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.js +5 -0
  642. package/packages/typescript/src/features/advanced-capabilities/experience/index.d.ts +1 -0
  643. package/packages/typescript/src/features/advanced-capabilities/experience/index.d.ts.map +1 -1
  644. package/packages/typescript/src/features/advanced-capabilities/experience/index.js +1 -0
  645. package/packages/typescript/src/features/advanced-capabilities/experience/providers/experienceProvider.d.ts.map +1 -1
  646. package/packages/typescript/src/features/advanced-capabilities/experience/providers/experienceProvider.js +16 -6
  647. package/packages/typescript/src/features/advanced-capabilities/experience/service.d.ts +21 -1
  648. package/packages/typescript/src/features/advanced-capabilities/experience/service.d.ts.map +1 -1
  649. package/packages/typescript/src/features/advanced-capabilities/experience/service.js +391 -8
  650. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts +44 -0
  651. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts.map +1 -1
  652. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceFormatter.d.ts +24 -0
  653. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceFormatter.d.ts.map +1 -0
  654. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceFormatter.js +152 -0
  655. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts +1 -0
  656. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts.map +1 -1
  657. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.js +53 -1
  658. package/packages/typescript/src/features/advanced-capabilities/index.d.ts.map +1 -1
  659. package/packages/typescript/src/features/advanced-capabilities/index.js +4 -2
  660. package/packages/typescript/src/features/advanced-capabilities/personality/index.d.ts +1 -2
  661. package/packages/typescript/src/features/advanced-capabilities/personality/index.d.ts.map +1 -1
  662. package/packages/typescript/src/features/advanced-capabilities/personality/index.js +1 -2
  663. package/packages/typescript/src/features/advanced-planning/actions/chain-example.d.ts.map +1 -1
  664. package/packages/typescript/src/features/advanced-planning/actions/chain-example.js +4 -7
  665. package/packages/typescript/src/features/basic-capabilities/actions/reply.d.ts.map +1 -1
  666. package/packages/typescript/src/features/basic-capabilities/actions/reply.js +1 -0
  667. package/packages/typescript/src/features/basic-capabilities/index.d.ts +1 -1
  668. package/packages/typescript/src/features/basic-capabilities/index.d.ts.map +1 -1
  669. package/packages/typescript/src/features/basic-capabilities/providers/actions.d.ts.map +1 -1
  670. package/packages/typescript/src/features/basic-capabilities/providers/actions.js +40 -2
  671. package/packages/typescript/src/features/index.js +1 -1
  672. package/packages/typescript/src/features/knowledge/actions.d.ts.map +1 -1
  673. package/packages/typescript/src/features/knowledge/actions.js +42 -16
  674. package/packages/typescript/src/features/plugin-manager/actions/coreStatusAction.d.ts.map +1 -1
  675. package/packages/typescript/src/features/plugin-manager/actions/coreStatusAction.js +23 -5
  676. package/packages/typescript/src/features/plugin-manager/actions/listEjectedPluginsAction.d.ts.map +1 -1
  677. package/packages/typescript/src/features/plugin-manager/actions/listEjectedPluginsAction.js +31 -6
  678. package/packages/typescript/src/features/plugin-manager/actions/plugin-handlers/core-status.d.ts.map +1 -1
  679. package/packages/typescript/src/features/plugin-manager/actions/plugin-handlers/create.d.ts.map +1 -1
  680. package/packages/typescript/src/features/plugin-manager/actions/plugin-handlers/create.js +21 -5
  681. package/packages/typescript/src/features/plugin-manager/actions/plugin-handlers/eject.d.ts.map +1 -1
  682. package/packages/typescript/src/features/plugin-manager/actions/plugin-handlers/eject.js +3 -1
  683. package/packages/typescript/src/features/plugin-manager/actions/plugin-handlers/install.d.ts.map +1 -1
  684. package/packages/typescript/src/features/plugin-manager/actions/plugin.d.ts.map +1 -1
  685. package/packages/typescript/src/features/plugin-manager/actions/plugin.js +4 -1
  686. package/packages/typescript/src/features/plugin-manager/actions/searchPluginAction.d.ts.map +1 -1
  687. package/packages/typescript/src/features/plugin-manager/actions/searchPluginAction.js +44 -11
  688. package/packages/typescript/src/features/plugin-manager/index.d.ts +2 -2
  689. package/packages/typescript/src/features/plugin-manager/index.d.ts.map +1 -1
  690. package/packages/typescript/src/features/plugin-manager/index.js +3 -3
  691. package/packages/typescript/src/features/plugin-manager/security.d.ts.map +1 -1
  692. package/packages/typescript/src/features/plugin-manager/services/pluginManagerService.d.ts.map +1 -1
  693. package/packages/typescript/src/features/plugin-manager/services/pluginManagerService.js +0 -1
  694. package/packages/typescript/src/features/plugin-manager/services/pluginRegistryService.d.ts.map +1 -1
  695. package/packages/typescript/src/features/plugin-manager/services/pluginRegistryService.js +1 -2
  696. package/packages/typescript/src/features/secrets/actions/manage-secret.d.ts.map +1 -1
  697. package/packages/typescript/src/features/secrets/actions/manage-secret.js +13 -2
  698. package/packages/typescript/src/features/secrets/actions/request-secret.d.ts.map +1 -1
  699. package/packages/typescript/src/features/secrets/actions/request-secret.js +23 -5
  700. package/packages/typescript/src/features/secrets/actions/set-secret.d.ts.map +1 -1
  701. package/packages/typescript/src/features/secrets/actions/set-secret.js +22 -4
  702. package/packages/typescript/src/features/secrets/index.d.ts +22 -0
  703. package/packages/typescript/src/features/secrets/index.d.ts.map +1 -0
  704. package/packages/typescript/src/features/secrets/index.js +24 -0
  705. package/packages/typescript/src/features/secrets/onboarding/action.d.ts.map +1 -1
  706. package/packages/typescript/src/features/secrets/onboarding/action.js +1 -0
  707. package/packages/typescript/src/features/secrets/plugin.d.ts +70 -0
  708. package/packages/typescript/src/features/secrets/plugin.d.ts.map +1 -0
  709. package/packages/typescript/src/features/secrets/plugin.js +87 -0
  710. package/packages/typescript/src/features/secrets/services/index.d.ts +7 -0
  711. package/packages/typescript/src/features/secrets/services/index.d.ts.map +1 -0
  712. package/packages/typescript/src/features/secrets/services/index.js +5 -0
  713. package/packages/typescript/src/features/secrets/types.d.ts +1 -1
  714. package/packages/typescript/src/features/secrets/types.js +1 -1
  715. package/packages/typescript/src/features/trust/actions/evaluateTrust.d.ts.map +1 -1
  716. package/packages/typescript/src/features/trust/actions/evaluateTrust.js +5 -0
  717. package/packages/typescript/src/features/trust/actions/recordTrustInteraction.d.ts.map +1 -1
  718. package/packages/typescript/src/features/trust/actions/recordTrustInteraction.js +5 -0
  719. package/packages/typescript/src/features/trust/actions/requestElevation.d.ts.map +1 -1
  720. package/packages/typescript/src/features/trust/actions/requestElevation.js +5 -0
  721. package/packages/typescript/src/features/trust/actions/roles.d.ts.map +1 -1
  722. package/packages/typescript/src/features/trust/actions/roles.js +4 -0
  723. package/packages/typescript/src/features/trust/actions/settings.d.ts.map +1 -1
  724. package/packages/typescript/src/features/trust/actions/settings.js +17 -4
  725. package/packages/typescript/src/features/trust/index.js +4 -4
  726. package/packages/typescript/src/features/trust/providers/settings.js +1 -1
  727. package/packages/typescript/src/features/trust/services/SecurityStore.d.ts +1 -1
  728. package/packages/typescript/src/features/trust/services/SecurityStore.js +1 -1
  729. package/packages/typescript/src/features/trust/services/db.js +1 -1
  730. package/packages/typescript/src/generated/action-docs.d.ts +93 -15
  731. package/packages/typescript/src/generated/action-docs.d.ts.map +1 -1
  732. package/packages/typescript/src/generated/action-docs.js +93 -16
  733. package/packages/typescript/src/index.node.d.ts +3 -0
  734. package/packages/typescript/src/index.node.d.ts.map +1 -1
  735. package/packages/typescript/src/index.node.js +4 -0
  736. package/packages/typescript/src/lifeops-passive-connectors.d.ts +7 -0
  737. package/packages/typescript/src/lifeops-passive-connectors.d.ts.map +1 -0
  738. package/packages/typescript/src/lifeops-passive-connectors.js +39 -0
  739. package/packages/typescript/src/runtime.d.ts +1 -0
  740. package/packages/typescript/src/runtime.d.ts.map +1 -1
  741. package/packages/typescript/src/runtime.js +199 -9
  742. package/packages/typescript/src/services/message.d.ts +7 -0
  743. package/packages/typescript/src/services/message.d.ts.map +1 -1
  744. package/packages/typescript/src/services/message.js +222 -25
  745. package/packages/typescript/src/types/components.d.ts +5 -0
  746. package/packages/typescript/src/types/components.d.ts.map +1 -1
  747. package/packages/typescript/src/types/memory.d.ts +2 -1
  748. package/packages/typescript/src/types/memory.d.ts.map +1 -1
  749. package/packages/typescript/src/utils/context-catalog.d.ts.map +1 -1
  750. package/packages/typescript/src/utils/context-catalog.js +124 -14
  751. package/packages/typescript/src/utils/context-routing.d.ts.map +1 -1
  752. package/packages/typescript/src/utils/context-routing.js +42 -0
  753. package/packages/typescript/src/utils/prompt-compression.d.ts +6 -0
  754. package/packages/typescript/src/utils/prompt-compression.d.ts.map +1 -0
  755. package/packages/typescript/src/utils/prompt-compression.js +14 -0
  756. package/packages/typescript/src/utils.d.ts +1 -0
  757. package/packages/typescript/src/utils.d.ts.map +1 -1
  758. package/packages/typescript/src/utils.js +2 -1
  759. package/packages/ui/src/components/composites/chat/chat-composer-shell.js +1 -1
  760. package/packages/ui/src/components/composites/sidebar/sidebar-root.js +3 -3
  761. package/packages/ui/src/components/ui/dialog.js +1 -1
  762. package/packages/ui/src/components/ui/drawer-sheet.js +1 -1
  763. package/packages/ui/src/components/ui/themed-select.js +2 -2
  764. package/packages/ui/src/components/ui/tooltip-extended.js +1 -1
  765. package/packages/ui/src/components/ui/tooltip.js +1 -1
  766. package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.js +1 -1
  767. package/packages/ui/src/layouts/workspace-layout/workspace-layout.js +2 -2
  768. package/plugins/plugin-browser-bridge/src/actions.d.ts +44 -0
  769. package/plugins/plugin-browser-bridge/src/actions.d.ts.map +1 -0
  770. package/plugins/plugin-browser-bridge/src/actions.js +234 -0
  771. package/plugins/plugin-browser-bridge/src/contracts.d.ts +272 -0
  772. package/plugins/plugin-browser-bridge/src/contracts.d.ts.map +1 -0
  773. package/plugins/plugin-browser-bridge/src/contracts.js +48 -0
  774. package/plugins/plugin-browser-bridge/src/index.d.ts +19 -0
  775. package/plugins/plugin-browser-bridge/src/index.d.ts.map +1 -0
  776. package/plugins/plugin-browser-bridge/src/index.js +18 -0
  777. package/plugins/plugin-browser-bridge/src/packaging.d.ts +27 -0
  778. package/plugins/plugin-browser-bridge/src/packaging.d.ts.map +1 -0
  779. package/plugins/plugin-browser-bridge/src/packaging.js +503 -0
  780. package/plugins/plugin-browser-bridge/src/plugin.d.ts +10 -0
  781. package/plugins/plugin-browser-bridge/src/plugin.d.ts.map +1 -0
  782. package/plugins/plugin-browser-bridge/src/plugin.js +140 -0
  783. package/plugins/plugin-browser-bridge/src/routes.d.ts +37 -0
  784. package/plugins/plugin-browser-bridge/src/routes.d.ts.map +1 -0
  785. package/plugins/plugin-browser-bridge/src/routes.js +496 -0
  786. package/plugins/plugin-browser-bridge/src/schema.d.ts +2250 -0
  787. package/plugins/plugin-browser-bridge/src/schema.d.ts.map +1 -0
  788. package/plugins/plugin-browser-bridge/src/schema.js +111 -0
  789. package/plugins/plugin-browser-bridge/src/service.d.ts +28 -0
  790. package/plugins/plugin-browser-bridge/src/service.d.ts.map +1 -0
  791. package/plugins/plugin-browser-bridge/src/service.js +1 -0
  792. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts +0 -3
  793. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts.map +0 -1
  794. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.js +0 -189
  795. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts +0 -2
  796. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts.map +0 -1
  797. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.js +0 -1065
  798. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts +0 -7
  799. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts.map +0 -1
  800. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.js +0 -71
  801. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts +0 -14
  802. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts.map +0 -1
  803. package/apps/app-lifeops/src/components/DataSourcesStrip.js +0 -36
  804. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts +0 -23
  805. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts.map +0 -1
  806. package/apps/app-lifeops/src/components/EventEditorDrawer.js +0 -514
  807. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts +0 -2
  808. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts.map +0 -1
  809. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.js +0 -10
  810. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts +0 -15
  811. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts.map +0 -1
  812. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.js +0 -515
  813. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts +0 -34
  814. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts.map +0 -1
  815. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.js +0 -175
  816. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts +0 -2
  817. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts.map +0 -1
  818. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.js +0 -99
  819. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts +0 -37
  820. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts.map +0 -1
  821. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.js +0 -88
  822. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts +0 -13
  823. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts.map +0 -1
  824. package/apps/app-lifeops/src/components/LifeOpsInboxSection.js +0 -491
  825. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts +0 -12
  826. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts.map +0 -1
  827. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.js +0 -92
  828. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts +0 -12
  829. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts.map +0 -1
  830. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.js +0 -160
  831. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts +0 -3
  832. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts.map +0 -1
  833. package/apps/app-lifeops/src/components/LifeOpsMoneySection.js +0 -373
  834. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts +0 -9
  835. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts.map +0 -1
  836. package/apps/app-lifeops/src/components/LifeOpsNavRail.js +0 -93
  837. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts +0 -4
  838. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts.map +0 -1
  839. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.js +0 -274
  840. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts +0 -7
  841. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts.map +0 -1
  842. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.js +0 -670
  843. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts +0 -42
  844. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts.map +0 -1
  845. package/apps/app-lifeops/src/components/LifeOpsPageSections.js +0 -166
  846. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts +0 -2
  847. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts.map +0 -1
  848. package/apps/app-lifeops/src/components/LifeOpsPageView.js +0 -566
  849. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts +0 -2
  850. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts.map +0 -1
  851. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.js +0 -749
  852. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts +0 -27
  853. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts.map +0 -1
  854. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.js +0 -106
  855. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts +0 -2
  856. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts.map +0 -1
  857. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.js +0 -373
  858. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts +0 -10
  859. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts.map +0 -1
  860. package/apps/app-lifeops/src/components/LifeOpsSectionContent.js +0 -30
  861. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts +0 -21
  862. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts.map +0 -1
  863. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.js +0 -30
  864. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts +0 -20
  865. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts.map +0 -1
  866. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.js +0 -598
  867. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts +0 -13
  868. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts.map +0 -1
  869. package/apps/app-lifeops/src/components/LifeOpsSetupGate.js +0 -134
  870. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts +0 -10
  871. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts.map +0 -1
  872. package/apps/app-lifeops/src/components/LifeOpsSleepSection.js +0 -425
  873. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts +0 -11
  874. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts.map +0 -1
  875. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.js +0 -49
  876. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts +0 -2
  877. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts.map +0 -1
  878. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.js +0 -1041
  879. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts +0 -7
  880. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts.map +0 -1
  881. package/apps/app-lifeops/src/components/MessagingConnectorCards.js +0 -643
  882. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts +0 -9
  883. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts.map +0 -1
  884. package/apps/app-lifeops/src/components/MissingSourceCard.js +0 -5
  885. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts +0 -2
  886. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts.map +0 -1
  887. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.js +0 -163
  888. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts +0 -8
  889. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts.map +0 -1
  890. package/apps/app-lifeops/src/components/SleepInspectionPanel.js +0 -59
  891. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts +0 -3
  892. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts.map +0 -1
  893. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.js +0 -75
  894. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts +0 -8
  895. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts.map +0 -1
  896. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.js +0 -48
  897. package/apps/app-lifeops/src/components/lifeops-labels.d.ts +0 -2
  898. package/apps/app-lifeops/src/components/lifeops-labels.d.ts.map +0 -1
  899. package/apps/app-lifeops/src/components/lifeops-labels.js +0 -5
  900. package/apps/app-lifeops/src/events/index.d.ts +0 -34
  901. package/apps/app-lifeops/src/events/index.d.ts.map +0 -1
  902. package/apps/app-lifeops/src/events/index.js +0 -23
  903. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts +0 -28
  904. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts.map +0 -1
  905. package/apps/app-lifeops/src/hooks/useCalendarWeek.js +0 -93
  906. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts +0 -14
  907. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts.map +0 -1
  908. package/apps/app-lifeops/src/hooks/useDiscordConnector.js +0 -126
  909. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts +0 -29
  910. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts.map +0 -1
  911. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.js +0 -481
  912. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts +0 -10
  913. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts.map +0 -1
  914. package/apps/app-lifeops/src/hooks/useIMessageConnector.js +0 -50
  915. package/apps/app-lifeops/src/hooks/useInbox.d.ts +0 -34
  916. package/apps/app-lifeops/src/hooks/useInbox.d.ts.map +0 -1
  917. package/apps/app-lifeops/src/hooks/useInbox.js +0 -98
  918. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts +0 -2
  919. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts.map +0 -1
  920. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.js +0 -383
  921. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts +0 -9
  922. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts.map +0 -1
  923. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.js +0 -83
  924. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts +0 -8
  925. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +0 -1
  926. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.js +0 -60
  927. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts +0 -18
  928. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts.map +0 -1
  929. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.js +0 -66
  930. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts +0 -14
  931. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts.map +0 -1
  932. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.js +0 -79
  933. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts +0 -18
  934. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts.map +0 -1
  935. package/apps/app-lifeops/src/hooks/useLifeOpsSection.js +0 -78
  936. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts +0 -14
  937. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts.map +0 -1
  938. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.js +0 -160
  939. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts +0 -16
  940. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts.map +0 -1
  941. package/apps/app-lifeops/src/hooks/useSignalConnector.js +0 -198
  942. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts +0 -21
  943. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts.map +0 -1
  944. package/apps/app-lifeops/src/hooks/useTelegramConnector.js +0 -177
  945. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts +0 -8
  946. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts.map +0 -1
  947. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.js +0 -58
  948. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts +0 -12
  949. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts.map +0 -1
  950. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.js +0 -159
  951. package/apps/app-lifeops/src/lifeops-route.d.ts +0 -74
  952. package/apps/app-lifeops/src/lifeops-route.d.ts.map +0 -1
  953. package/apps/app-lifeops/src/lifeops-route.js +0 -204
  954. package/apps/app-lifeops/src/platform/lifeops-github.d.ts +0 -15
  955. package/apps/app-lifeops/src/platform/lifeops-github.d.ts.map +0 -1
  956. package/apps/app-lifeops/src/platform/lifeops-github.js +0 -135
  957. package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts +0 -2
  958. package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts.map +0 -1
  959. package/apps/app-lifeops/src/types/app-blocker-settings-card.js +0 -1
  960. package/apps/app-lifeops/src/types/index.d.ts +0 -3
  961. package/apps/app-lifeops/src/types/index.d.ts.map +0 -1
  962. package/apps/app-lifeops/src/types/index.js +0 -1
  963. package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts +0 -2
  964. package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts.map +0 -1
  965. package/apps/app-lifeops/src/types/website-blocker-settings-card.js +0 -1
  966. package/apps/app-lifeops/src/ui.d.ts +0 -11
  967. package/apps/app-lifeops/src/ui.d.ts.map +0 -1
  968. package/apps/app-lifeops/src/ui.js +0 -9
  969. package/apps/app-lifeops/src/utils/lifeops-url.d.ts +0 -5
  970. package/apps/app-lifeops/src/utils/lifeops-url.d.ts.map +0 -1
  971. package/apps/app-lifeops/src/utils/lifeops-url.js +0 -35
  972. package/packages/native-plugins/mobile-signals/src/definitions.d.ts +0 -162
  973. package/packages/native-plugins/mobile-signals/src/definitions.d.ts.map +0 -1
  974. package/packages/native-plugins/mobile-signals/src/definitions.js +0 -1
  975. package/packages/native-plugins/mobile-signals/src/index.d.ts +0 -4
  976. package/packages/native-plugins/mobile-signals/src/index.d.ts.map +0 -1
  977. package/packages/native-plugins/mobile-signals/src/index.js +0 -6
  978. package/packages/native-plugins/mobile-signals/src/web.d.ts +0 -29
  979. package/packages/native-plugins/mobile-signals/src/web.d.ts.map +0 -1
  980. package/packages/native-plugins/mobile-signals/src/web.js +0 -269
@@ -1,749 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { client, useApp } from "@elizaos/app-core";
3
- import { AlarmClock, Apple, Bell, Check, ChevronDown, Clock, Loader2, MessageSquare, Plus, RefreshCw, Repeat, Trash2, } from "lucide-react";
4
- import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
5
- import { useLifeOpsChatLauncher } from "./LifeOpsChatAdapter.js";
6
- import { useLifeOpsSelection, } from "./LifeOpsSelectionContext.js";
7
- const URGENCY_STYLES = {
8
- overdue: {
9
- label: "Overdue",
10
- dot: "bg-rose-500",
11
- pill: "bg-rose-500/15 text-rose-300",
12
- accent: "bg-rose-500/70",
13
- chip: "text-rose-300",
14
- },
15
- soon: {
16
- label: "Within the hour",
17
- dot: "bg-amber-400",
18
- pill: "bg-amber-500/15 text-amber-300",
19
- accent: "bg-amber-400/70",
20
- chip: "text-amber-300",
21
- },
22
- today: {
23
- label: "Today",
24
- dot: "bg-blue-400",
25
- pill: "bg-blue-500/15 text-blue-300",
26
- accent: "bg-blue-400/70",
27
- chip: "text-blue-300",
28
- },
29
- later: {
30
- label: "Later this week",
31
- dot: "bg-emerald-400",
32
- pill: "bg-emerald-500/15 text-emerald-300",
33
- accent: "bg-emerald-400/70",
34
- chip: "text-emerald-300",
35
- },
36
- };
37
- const BUCKET_ORDER = ["overdue", "soon", "today", "later"];
38
- // Mirror of NATIVE_APPLE_REMINDER_METADATA_KEY from
39
- // `eliza/apps/app-lifeops/src/lifeops/apple-reminders.ts` — that module pulls
40
- // in `node:child_process` so we cannot import it from a browser bundle.
41
- // Keep this constant in sync with apple-reminders.ts.
42
- const NATIVE_APPLE_REMINDER_METADATA_KEY = "nativeAppleReminder";
43
- const WEEKDAY_LABELS = [
44
- { key: 1, short: "M", long: "Monday" },
45
- { key: 2, short: "T", long: "Tuesday" },
46
- { key: 3, short: "W", long: "Wednesday" },
47
- { key: 4, short: "T", long: "Thursday" },
48
- { key: 5, short: "F", long: "Friday" },
49
- { key: 6, short: "S", long: "Saturday" },
50
- { key: 0, short: "S", long: "Sunday" },
51
- ];
52
- const SUPPORTED_CHANNEL_OPTIONS = [
53
- { value: "default", label: "Use default" },
54
- { value: "push", label: "Force push" },
55
- { value: "sms", label: "Force SMS" },
56
- { value: "email", label: "Force email" },
57
- { value: "telegram", label: "Force Telegram" },
58
- { value: "imessage", label: "Force iMessage" },
59
- ];
60
- const SNOOZE_OPTIONS = [
61
- { key: "5m", label: "+5 min", request: { minutes: 5 } },
62
- { key: "15m", label: "+15 min", request: { preset: "15m" } },
63
- { key: "30m", label: "+30 min", request: { preset: "30m" } },
64
- { key: "1h", label: "+1 hour", request: { preset: "1h" } },
65
- { key: "1d", label: "+1 day", request: { minutes: 60 * 24 } },
66
- ];
67
- const DEFAULT_SNOOZE = SNOOZE_OPTIONS[1] ?? {
68
- key: "15m",
69
- label: "+15 min",
70
- request: { preset: "15m" },
71
- };
72
- // ---------------------------------------------------------------------------
73
- // Pure helpers
74
- // ---------------------------------------------------------------------------
75
- function classifyReminder(iso) {
76
- const parsed = Date.parse(iso);
77
- if (!Number.isFinite(parsed))
78
- return "later";
79
- const diffMin = Math.round((parsed - Date.now()) / 60_000);
80
- if (diffMin < 0)
81
- return "overdue";
82
- if (diffMin < 60)
83
- return "soon";
84
- if (diffMin < 60 * 24)
85
- return "today";
86
- return "later";
87
- }
88
- function formatRelative(iso) {
89
- const parsed = Date.parse(iso);
90
- if (!Number.isFinite(parsed))
91
- return iso;
92
- const diffMin = Math.round((parsed - Date.now()) / 60_000);
93
- if (Math.abs(diffMin) < 1)
94
- return "now";
95
- if (diffMin > 0) {
96
- if (diffMin < 60)
97
- return `in ${diffMin}m`;
98
- const hrs = Math.round(diffMin / 60);
99
- if (hrs < 24)
100
- return `in ${hrs}h`;
101
- return `in ${Math.round(hrs / 24)}d`;
102
- }
103
- const ago = Math.abs(diffMin);
104
- if (ago < 60)
105
- return `${ago}m ago`;
106
- const agoH = Math.round(ago / 60);
107
- if (agoH < 24)
108
- return `${agoH}h ago`;
109
- return `${Math.round(agoH / 24)}d ago`;
110
- }
111
- function formatClock(iso) {
112
- const date = new Date(iso);
113
- if (!Number.isFinite(date.getTime()))
114
- return iso;
115
- return new Intl.DateTimeFormat(undefined, {
116
- month: "short",
117
- day: "numeric",
118
- hour: "numeric",
119
- minute: "2-digit",
120
- }).format(date);
121
- }
122
- function formatTimeOfDay(iso) {
123
- const date = new Date(iso);
124
- if (!Number.isFinite(date.getTime())) {
125
- return { primary: iso, suffix: "" };
126
- }
127
- const formatter = new Intl.DateTimeFormat(undefined, {
128
- hour: "numeric",
129
- minute: "2-digit",
130
- hour12: true,
131
- });
132
- const formatted = formatter.format(date);
133
- // Split off the trailing AM/PM if present so we can render it small.
134
- const match = formatted.match(/^(.*?)(\s*[AaPp][Mm])$/);
135
- if (match) {
136
- return { primary: match[1].trim(), suffix: match[2].trim() };
137
- }
138
- return { primary: formatted, suffix: "" };
139
- }
140
- function formatNextFireDay(iso) {
141
- const date = new Date(iso);
142
- if (!Number.isFinite(date.getTime()))
143
- return "";
144
- const now = new Date();
145
- const isSameDay = date.getFullYear() === now.getFullYear() &&
146
- date.getMonth() === now.getMonth() &&
147
- date.getDate() === now.getDate();
148
- if (isSameDay)
149
- return "Today";
150
- const tomorrow = new Date(now);
151
- tomorrow.setDate(now.getDate() + 1);
152
- if (date.getFullYear() === tomorrow.getFullYear() &&
153
- date.getMonth() === tomorrow.getMonth() &&
154
- date.getDate() === tomorrow.getDate()) {
155
- return "Tomorrow";
156
- }
157
- return new Intl.DateTimeFormat(undefined, {
158
- weekday: "short",
159
- month: "short",
160
- day: "numeric",
161
- }).format(date);
162
- }
163
- function channelLabel(channel) {
164
- switch (channel) {
165
- case "telegram":
166
- return "Telegram";
167
- case "discord":
168
- return "Discord";
169
- case "imessage":
170
- return "iMessage";
171
- case "signal":
172
- return "Signal";
173
- case "push":
174
- return "Push";
175
- case "email":
176
- return "Email";
177
- case "sms":
178
- return "SMS";
179
- case "in_app":
180
- return "In-app";
181
- case "voice":
182
- return "Voice";
183
- case "whatsapp":
184
- return "WhatsApp";
185
- default:
186
- return channel;
187
- }
188
- }
189
- function isRecord(value) {
190
- return Boolean(value) && typeof value === "object" && !Array.isArray(value);
191
- }
192
- function readNativeAppleMetadata(metadata) {
193
- if (!isRecord(metadata))
194
- return null;
195
- const raw = metadata[NATIVE_APPLE_REMINDER_METADATA_KEY];
196
- if (!isRecord(raw))
197
- return null;
198
- const kind = raw.kind === "alarm" || raw.kind === "reminder" ? raw.kind : null;
199
- if (!kind)
200
- return null;
201
- const reminderId = typeof raw.reminderId === "string" && raw.reminderId.trim().length > 0
202
- ? raw.reminderId.trim()
203
- : null;
204
- return { kind, reminderId };
205
- }
206
- function describeRecurrence(cadence) {
207
- if (!cadence)
208
- return null;
209
- switch (cadence.kind) {
210
- case "once":
211
- return null;
212
- case "daily":
213
- return "Daily";
214
- case "interval": {
215
- const minutes = cadence.everyMinutes;
216
- if (minutes >= 60 && minutes % 60 === 0) {
217
- const hours = minutes / 60;
218
- return hours === 1 ? "Every hour" : `Every ${hours}h`;
219
- }
220
- return `Every ${minutes}m`;
221
- }
222
- case "times_per_day": {
223
- const slots = cadence.slots?.length ?? 0;
224
- return slots > 0 ? `${slots}x/day` : "Daily";
225
- }
226
- case "weekly": {
227
- const weekdays = Array.isArray(cadence.weekdays) ? cadence.weekdays : [];
228
- if (weekdays.length === 0)
229
- return "Weekly";
230
- if (weekdays.length === 7)
231
- return "Daily";
232
- const labels = WEEKDAY_LABELS.filter((day) => weekdays.includes(day.key))
233
- .sort((a, b) => {
234
- // Sort Mon..Sun (0=Sun -> last)
235
- const order = (k) => (k === 0 ? 7 : k);
236
- return order(a.key) - order(b.key);
237
- })
238
- .map((day) => day.long.slice(0, 3));
239
- return `Weekly ${labels.join("/")}`;
240
- }
241
- default:
242
- return null;
243
- }
244
- }
245
- function pickAlarmCadence(hour, minute, weekdays, timezone) {
246
- const minuteOfDay = hour * 60 + minute;
247
- if (weekdays.size === 0) {
248
- // Single-fire: schedule next occurrence of HH:MM (today if still in the
249
- // future, otherwise tomorrow).
250
- const now = new Date();
251
- const candidate = new Date(now);
252
- candidate.setHours(hour, minute, 0, 0);
253
- if (candidate.getTime() <= now.getTime()) {
254
- candidate.setDate(candidate.getDate() + 1);
255
- }
256
- return { kind: "once", dueAt: candidate.toISOString() };
257
- }
258
- if (weekdays.size === 7) {
259
- return {
260
- kind: "times_per_day",
261
- slots: [
262
- {
263
- key: "alarm",
264
- label: "Alarm",
265
- minuteOfDay,
266
- durationMinutes: 1,
267
- },
268
- ],
269
- };
270
- }
271
- return {
272
- kind: "weekly",
273
- weekdays: Array.from(weekdays).sort((a, b) => a - b),
274
- windows: [],
275
- visibilityLeadMinutes: 0,
276
- visibilityLagMinutes: 0,
277
- };
278
- }
279
- function defaultTimezone() {
280
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
281
- }
282
- function SnoozeSplitButton({ occurrenceId, busyAction, optimisticState, onSnooze, onCustomSnooze, }) {
283
- const [open, setOpen] = useState(false);
284
- const containerRef = useRef(null);
285
- useEffect(() => {
286
- if (!open)
287
- return;
288
- const onDoc = (event) => {
289
- if (!containerRef.current)
290
- return;
291
- if (!containerRef.current.contains(event.target)) {
292
- setOpen(false);
293
- }
294
- };
295
- document.addEventListener("mousedown", onDoc);
296
- return () => document.removeEventListener("mousedown", onDoc);
297
- }, [open]);
298
- const disabled = !occurrenceId || optimisticState !== "idle" || busyAction !== null;
299
- return (_jsxs("div", { ref: containerRef, className: "relative inline-flex items-stretch overflow-hidden rounded-lg border border-border/15 bg-bg-muted/30 text-[11px] font-semibold text-muted", children: [_jsxs("button", { type: "button", disabled: disabled, onClick: () => onSnooze(DEFAULT_SNOOZE), className: "inline-flex items-center gap-1 px-2 py-1 transition-colors hover:bg-bg-muted/60 hover:text-txt disabled:cursor-not-allowed disabled:opacity-40", title: occurrenceId
300
- ? `Snooze ${DEFAULT_SNOOZE.label}`
301
- : "Snooze unavailable for this reminder", "aria-label": `Snooze ${DEFAULT_SNOOZE.label}`, children: [busyAction === "snooze" ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin" })) : (_jsx(Clock, { className: "h-3 w-3", "aria-hidden": true })), DEFAULT_SNOOZE.label] }), _jsx("button", { type: "button", disabled: disabled, onClick: () => setOpen((prev) => !prev), className: "inline-flex items-center border-l border-border/15 px-1.5 py-1 transition-colors hover:bg-bg-muted/60 hover:text-txt disabled:cursor-not-allowed disabled:opacity-40", "aria-label": "Snooze options", "aria-expanded": open, children: _jsx(ChevronDown, { className: "h-3 w-3", "aria-hidden": true }) }), open ? (_jsxs("div", { role: "menu", className: "absolute right-0 top-full z-20 mt-1 w-40 overflow-hidden rounded-lg border border-border/20 bg-card shadow-lg", children: [SNOOZE_OPTIONS.map((option) => (_jsx("button", { type: "button", role: "menuitem", onClick: () => {
302
- setOpen(false);
303
- onSnooze(option);
304
- }, className: "block w-full px-3 py-1.5 text-left text-[11px] font-medium text-txt transition-colors hover:bg-bg-muted/40", children: option.label }, option.key))), _jsx("button", { type: "button", role: "menuitem", onClick: () => {
305
- setOpen(false);
306
- onCustomSnooze();
307
- }, className: "block w-full border-t border-border/12 px-3 py-1.5 text-left text-[11px] font-medium text-txt transition-colors hover:bg-bg-muted/40", children: "Custom\u2026" })] })) : null] }));
308
- }
309
- function CompleteButton({ occurrenceId, busyAction, optimisticState, onComplete, }) {
310
- const disabled = !occurrenceId || optimisticState !== "idle" || busyAction !== null;
311
- return (_jsx("button", { type: "button", disabled: disabled, onClick: onComplete, className: "inline-flex h-7 w-7 items-center justify-center rounded-lg border border-border/15 bg-bg-muted/30 text-emerald-300 transition-colors hover:bg-emerald-500/15 hover:text-emerald-200 disabled:cursor-not-allowed disabled:opacity-40", title: occurrenceId
312
- ? "Mark complete"
313
- : "Complete unavailable for this reminder", "aria-label": "Mark complete", children: busyAction === "complete" ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(Check, { className: "h-3.5 w-3.5", "aria-hidden": true })) }));
314
- }
315
- // ---------------------------------------------------------------------------
316
- // Channel override popover
317
- // ---------------------------------------------------------------------------
318
- function ChannelOverridePopover({ channel }) {
319
- const [open, setOpen] = useState(false);
320
- const ref = useRef(null);
321
- useEffect(() => {
322
- if (!open)
323
- return;
324
- const onDoc = (event) => {
325
- if (!ref.current)
326
- return;
327
- if (!ref.current.contains(event.target)) {
328
- setOpen(false);
329
- }
330
- };
331
- document.addEventListener("mousedown", onDoc);
332
- return () => document.removeEventListener("mousedown", onDoc);
333
- }, [open]);
334
- return (_jsxs("span", { ref: ref, className: "relative inline-flex", children: [_jsxs("button", { type: "button", onClick: (e) => {
335
- e.stopPropagation();
336
- setOpen((prev) => !prev);
337
- }, className: "inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px] font-medium text-muted/80 hover:bg-bg-muted/50 hover:text-txt", "aria-label": `Change delivery channel (currently ${channelLabel(channel)})`, "aria-expanded": open, children: ["via ", channelLabel(channel)] }), open ? (_jsxs("div", { role: "menu", className: "absolute left-0 top-full z-20 mt-1 w-44 overflow-hidden rounded-lg border border-border/20 bg-card shadow-lg", onClick: (e) => e.stopPropagation(), children: [SUPPORTED_CHANNEL_OPTIONS.map((option) => (_jsx("div", { role: "menuitem", className: "px-3 py-1.5 text-[11px] text-muted opacity-60", title: "Channel override API not yet wired \u2014 Coming soon", children: option.label }, option.value))), _jsx("div", { className: "border-t border-border/12 px-3 py-1.5 text-[10px] text-muted/70", children: "Coming soon" })] })) : null] }));
338
- }
339
- function ReminderRow({ reminder, urgency, isSelected, apple, recurrence, busyAction, optimisticState, onSelect, onChat, onSnooze, onComplete, onCustomSnooze, }) {
340
- const style = URGENCY_STYLES[urgency];
341
- const occurrenceId = reminder.occurrenceId;
342
- const fading = optimisticState !== "idle";
343
- return (_jsxs("div", { className: [
344
- "group flex items-stretch gap-2 border-b border-border/8 pr-3 last:border-b-0",
345
- isSelected ? "bg-accent/8" : "hover:bg-bg-muted/25",
346
- fading ? "opacity-50" : "",
347
- ].join(" "), children: [_jsxs("button", { type: "button", "aria-pressed": isSelected, className: "flex min-w-0 flex-1 items-stretch gap-3 text-left", onClick: onSelect, children: [_jsx("span", { "aria-hidden": true, className: `w-1 shrink-0 ${style.accent} ${isSelected ? "" : "opacity-70 group-hover:opacity-100"}` }), _jsxs("span", { className: "flex min-w-0 flex-1 items-start gap-3 py-2.5", children: [_jsx("span", { className: "mt-1 flex h-7 w-7 shrink-0 items-center justify-center rounded-xl bg-bg-muted/30 text-muted", children: _jsx(Bell, { className: "h-3.5 w-3.5", "aria-hidden": true }) }), _jsxs("span", { className: "min-w-0 flex-1 space-y-0.5", children: [_jsxs("span", { className: "flex flex-wrap items-center gap-1.5", children: [_jsx("span", { className: "truncate text-sm font-medium text-txt", children: reminder.title }), recurrence ? (_jsxs("span", { className: "inline-flex items-center gap-0.5 rounded-full bg-bg-muted/40 px-1.5 py-0 text-[10px] font-medium text-muted", title: `Repeats: ${recurrence}`, children: [_jsx(Repeat, { className: "h-2.5 w-2.5", "aria-hidden": true }), recurrence] })) : null, _jsx(SourceBadge, { apple: apple }), optimisticState === "snoozed" ? (_jsx("span", { className: "rounded-full bg-blue-500/15 px-1.5 py-0 text-[10px] font-medium text-blue-300", children: "snoozed" })) : null, optimisticState === "completed" ? (_jsx("span", { className: "rounded-full bg-emerald-500/15 px-1.5 py-0 text-[10px] font-medium text-emerald-300", children: "completed" })) : null] }), _jsxs("span", { className: "flex flex-wrap items-center gap-x-2 gap-y-0.5 text-[11px] text-muted", children: [_jsx("span", { children: formatClock(reminder.scheduledFor) }), reminder.stepLabel ? (_jsxs("span", { className: "text-muted/70", children: ["\u00B7 ", reminder.stepLabel] })) : null, _jsx("span", { className: "text-muted/70", children: "\u00B7" }), _jsx(ChannelOverridePopover, { channel: reminder.channel })] })] }), _jsx("span", { className: `mt-1 shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold tabular-nums ${style.pill}`, children: formatRelative(reminder.scheduledFor) })] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5 py-2.5", children: [_jsx(SnoozeSplitButton, { occurrenceId: occurrenceId, busyAction: busyAction, optimisticState: optimisticState, onSnooze: onSnooze, onCustomSnooze: onCustomSnooze }), _jsx(CompleteButton, { occurrenceId: occurrenceId, busyAction: busyAction, optimisticState: optimisticState, onComplete: onComplete }), _jsxs("button", { type: "button", onClick: onChat, className: "inline-flex h-7 items-center gap-1.5 rounded-lg px-2.5 text-[11px] font-semibold text-muted transition-colors hover:bg-bg-muted/40 hover:text-txt", "aria-label": `Chat about ${reminder.title}`, children: [_jsx(MessageSquare, { className: "h-3.5 w-3.5", "aria-hidden": true }), "Chat"] })] })] }));
348
- }
349
- function SourceBadge({ apple, }) {
350
- if (apple) {
351
- return (_jsxs("span", { className: "inline-flex items-center gap-0.5 rounded-full bg-rose-500/15 px-1.5 py-0 text-[10px] font-medium text-rose-200", title: "Mirrored to your Apple Reminders app via the native macOS integration.", children: [_jsx(Apple, { className: "h-2.5 w-2.5", "aria-hidden": true }), "Apple Reminders"] }));
352
- }
353
- return (_jsx("span", { className: "inline-flex items-center gap-0.5 rounded-full bg-bg-muted/40 px-1.5 py-0 text-[10px] font-medium text-muted", title: "Delivered in-app by Eliza only \u2014 not mirrored to a native reminder service.", children: "In-app" }));
354
- }
355
- function BucketHeader({ urgency, count, }) {
356
- const style = URGENCY_STYLES[urgency];
357
- return (_jsxs("div", { className: "flex items-center gap-2 px-1 py-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted", children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full ${style.dot}`, "aria-hidden": true }), _jsx("span", { className: style.chip, children: style.label }), _jsxs("span", { className: "text-muted/60", children: ["\u00B7 ", count] })] }));
358
- }
359
- function buildAlarmEntries(definitions, reminders) {
360
- const remindersByDefId = new Map();
361
- for (const reminder of reminders) {
362
- if (reminder.definitionId && !remindersByDefId.has(reminder.definitionId)) {
363
- remindersByDefId.set(reminder.definitionId, reminder);
364
- }
365
- }
366
- const entries = [];
367
- for (const record of definitions) {
368
- const apple = readNativeAppleMetadata(record.definition.metadata);
369
- if (!apple || apple.kind !== "alarm")
370
- continue;
371
- if (record.definition.status === "archived")
372
- continue;
373
- const reminder = remindersByDefId.get(record.definition.id) ?? null;
374
- const recurrence = describeRecurrence(record.definition.cadence) ?? "Once";
375
- const nextFireIso = computeNextFireIso(record.definition, reminder);
376
- entries.push({
377
- definition: record.definition,
378
- reminder,
379
- recurrence,
380
- nextFireIso,
381
- apple,
382
- });
383
- }
384
- entries.sort((a, b) => {
385
- if (a.nextFireIso && b.nextFireIso) {
386
- return a.nextFireIso.localeCompare(b.nextFireIso);
387
- }
388
- if (a.nextFireIso)
389
- return -1;
390
- if (b.nextFireIso)
391
- return 1;
392
- return a.definition.title.localeCompare(b.definition.title);
393
- });
394
- return entries;
395
- }
396
- function computeNextFireIso(definition, reminder) {
397
- if (reminder?.scheduledFor)
398
- return reminder.scheduledFor;
399
- const cadence = definition.cadence;
400
- const now = new Date();
401
- if (cadence.kind === "once")
402
- return cadence.dueAt;
403
- if (cadence.kind === "times_per_day") {
404
- const slot = cadence.slots?.[0];
405
- if (!slot)
406
- return null;
407
- const candidate = new Date(now);
408
- candidate.setHours(0, 0, 0, 0);
409
- candidate.setMinutes(slot.minuteOfDay);
410
- if (candidate.getTime() <= now.getTime()) {
411
- candidate.setDate(candidate.getDate() + 1);
412
- }
413
- return candidate.toISOString();
414
- }
415
- if (cadence.kind === "weekly") {
416
- const weekdays = cadence.weekdays ?? [];
417
- if (weekdays.length === 0)
418
- return null;
419
- // We don't know the time-of-day in the weekly cadence; fall back to now+1d.
420
- const candidate = new Date(now);
421
- for (let offset = 0; offset < 8; offset += 1) {
422
- const probe = new Date(candidate);
423
- probe.setDate(candidate.getDate() + offset);
424
- if (weekdays.includes(probe.getDay())) {
425
- return probe.toISOString();
426
- }
427
- }
428
- }
429
- return null;
430
- }
431
- function AddAlarmForm({ saving, onSave, onCancel }) {
432
- const [time, setTime] = useState("07:00");
433
- const [label, setLabel] = useState("");
434
- const [weekdays, setWeekdays] = useState(new Set());
435
- const toggleWeekday = (key) => {
436
- setWeekdays((prev) => {
437
- const next = new Set(prev);
438
- if (next.has(key)) {
439
- next.delete(key);
440
- }
441
- else {
442
- next.add(key);
443
- }
444
- return next;
445
- });
446
- };
447
- const handleSubmit = (event) => {
448
- event.preventDefault();
449
- const [hStr, mStr] = time.split(":");
450
- const hour = Number.parseInt(hStr ?? "", 10);
451
- const minute = Number.parseInt(mStr ?? "", 10);
452
- if (!Number.isFinite(hour) || hour < 0 || hour > 23)
453
- return;
454
- if (!Number.isFinite(minute) || minute < 0 || minute > 59)
455
- return;
456
- onSave({ label: label.trim(), hour, minute, weekdays });
457
- };
458
- return (_jsxs("form", { onSubmit: handleSubmit, className: "space-y-3 rounded-2xl border border-border/15 bg-card/30 p-4", children: [_jsxs("div", { className: "flex flex-wrap items-end gap-3", children: [_jsxs("label", { className: "flex flex-col gap-1 text-[11px] font-medium text-muted", children: ["Time", _jsx("input", { type: "time", value: time, onChange: (e) => setTime(e.target.value), className: "rounded-lg border border-border/20 bg-bg-muted/30 px-3 py-1.5 text-base font-semibold text-txt tabular-nums focus:border-accent focus:outline-none", required: true })] }), _jsxs("label", { className: "flex min-w-[12rem] flex-1 flex-col gap-1 text-[11px] font-medium text-muted", children: ["Label (optional)", _jsx("input", { type: "text", value: label, onChange: (e) => setLabel(e.target.value), placeholder: "Morning workout", className: "rounded-lg border border-border/20 bg-bg-muted/30 px-3 py-1.5 text-sm text-txt focus:border-accent focus:outline-none", maxLength: 120 })] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("span", { className: "text-[11px] font-medium text-muted", children: "Repeat" }), _jsx("div", { className: "flex flex-wrap gap-1", children: WEEKDAY_LABELS.map((day) => {
459
- const active = weekdays.has(day.key);
460
- return (_jsx("button", { type: "button", onClick: () => toggleWeekday(day.key), "aria-pressed": active, title: day.long, className: [
461
- "h-8 w-8 rounded-full border text-[11px] font-semibold transition-colors",
462
- active
463
- ? "border-accent bg-accent/20 text-accent"
464
- : "border-border/20 bg-bg-muted/20 text-muted hover:bg-bg-muted/40",
465
- ].join(" "), children: day.short }, day.key));
466
- }) }), _jsx("p", { className: "pt-0.5 text-[10px] text-muted/70", children: weekdays.size === 0
467
- ? "Single fire (next occurrence)."
468
- : weekdays.size === 7
469
- ? "Repeats every day."
470
- : `Repeats on ${weekdays.size} day${weekdays.size === 1 ? "" : "s"}.` })] }), _jsxs("div", { className: "flex items-center justify-end gap-2 pt-1", children: [_jsx("button", { type: "button", onClick: onCancel, className: "rounded-lg px-3 py-1.5 text-[11px] font-semibold text-muted hover:bg-bg-muted/40 hover:text-txt", children: "Cancel" }), _jsxs("button", { type: "submit", disabled: saving, className: "inline-flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[11px] font-semibold text-bg shadow-sm transition-colors hover:bg-accent/90 disabled:opacity-50", children: [saving ? _jsx(Loader2, { className: "h-3 w-3 animate-spin" }) : null, "Save alarm"] })] })] }));
471
- }
472
- function AlarmRow({ entry, busyAction, optimisticState, onSnooze, onComplete, onCustomSnooze, onDelete, }) {
473
- const occurrenceId = entry.reminder?.occurrenceId ?? null;
474
- const time = entry.nextFireIso ? formatTimeOfDay(entry.nextFireIso) : null;
475
- const day = entry.nextFireIso ? formatNextFireDay(entry.nextFireIso) : "";
476
- const fading = optimisticState !== "idle";
477
- return (_jsxs("div", { className: [
478
- "flex flex-wrap items-center gap-4 rounded-2xl border border-border/15 bg-card/30 px-4 py-3",
479
- fading ? "opacity-50" : "",
480
- ].join(" "), children: [_jsx("div", { className: "flex min-w-[10rem] items-baseline gap-1", children: time ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "font-mono text-4xl font-light tabular-nums text-txt", children: time.primary }), time.suffix ? (_jsx("span", { className: "text-xs font-medium uppercase text-muted", children: time.suffix })) : null] })) : (_jsx("span", { className: "text-2xl font-light text-muted", children: "--:--" })) }), _jsxs("div", { className: "min-w-0 flex-1 space-y-0.5", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [_jsx("span", { className: "truncate text-sm font-medium text-txt", children: entry.definition.title }), _jsxs("span", { className: "inline-flex items-center gap-0.5 rounded-full bg-bg-muted/40 px-1.5 py-0 text-[10px] font-medium text-muted", title: `Repeats: ${entry.recurrence}`, children: [_jsx(Repeat, { className: "h-2.5 w-2.5", "aria-hidden": true }), entry.recurrence] }), _jsx(SourceBadge, { apple: entry.apple }), optimisticState === "deleted" ? (_jsx("span", { className: "rounded-full bg-rose-500/15 px-1.5 py-0 text-[10px] font-medium text-rose-300", children: "deleted" })) : null] }), _jsxs("div", { className: "text-[11px] text-muted", children: [day ? `${day} · ` : "", entry.nextFireIso ? formatRelative(entry.nextFireIso) : "No upcoming fire"] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [_jsx(SnoozeSplitButton, { occurrenceId: occurrenceId, busyAction: busyAction === "delete" ? null : busyAction, optimisticState: optimisticState === "deleted" ? "snoozed" : optimisticState, onSnooze: onSnooze, onCustomSnooze: onCustomSnooze }), _jsx(CompleteButton, { occurrenceId: occurrenceId, busyAction: busyAction === "delete" ? null : busyAction, optimisticState: optimisticState === "deleted" ? "completed" : optimisticState, onComplete: onComplete }), _jsx("button", { type: "button", onClick: onDelete, disabled: busyAction !== null || optimisticState === "deleted", className: "inline-flex h-7 w-7 items-center justify-center rounded-lg border border-border/15 bg-bg-muted/30 text-rose-300 transition-colors hover:bg-rose-500/15 hover:text-rose-200 disabled:cursor-not-allowed disabled:opacity-40", "aria-label": "Delete alarm", title: "Delete alarm", children: busyAction === "delete" ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" })) : (_jsx(Trash2, { className: "h-3.5 w-3.5", "aria-hidden": true })) })] })] }));
481
- }
482
- // ---------------------------------------------------------------------------
483
- // Top-level section
484
- // ---------------------------------------------------------------------------
485
- export function LifeOpsRemindersSection() {
486
- const { t } = useApp();
487
- const { selection, select } = useLifeOpsSelection();
488
- const { chatAboutReminder } = useLifeOpsChatLauncher();
489
- const [tab, setTab] = useState("reminders");
490
- const [reminders, setReminders] = useState([]);
491
- const [definitions, setDefinitions] = useState([]);
492
- const [loading, setLoading] = useState(false);
493
- const [error, setError] = useState(null);
494
- const [showAddAlarm, setShowAddAlarm] = useState(false);
495
- const [savingAlarm, setSavingAlarm] = useState(false);
496
- const [rowState, setRowState] = useState({});
497
- const setRowBusy = useCallback((key, busy) => {
498
- setRowState((prev) => ({
499
- ...prev,
500
- [key]: { ...(prev[key] ?? { optimistic: "idle" }), busy },
501
- }));
502
- }, []);
503
- const setRowOptimistic = useCallback((key, optimistic) => {
504
- setRowState((prev) => ({
505
- ...prev,
506
- [key]: { ...(prev[key] ?? { busy: null }), optimistic },
507
- }));
508
- }, []);
509
- const load = useCallback(async () => {
510
- setLoading(true);
511
- setError(null);
512
- try {
513
- const [overview, defs] = await Promise.all([
514
- client.getLifeOpsOverview(),
515
- client.listLifeOpsDefinitions(),
516
- ]);
517
- setReminders(overview.reminders);
518
- setDefinitions(defs.definitions);
519
- setRowState({});
520
- }
521
- catch (cause) {
522
- setError(cause instanceof Error
523
- ? cause.message
524
- : t("lifeopsreminders.loadFailed", {
525
- defaultValue: "Failed to load reminders.",
526
- }));
527
- }
528
- finally {
529
- setLoading(false);
530
- }
531
- }, [t]);
532
- useEffect(() => {
533
- void load();
534
- }, [load]);
535
- const definitionById = useMemo(() => {
536
- const map = new Map();
537
- for (const record of definitions) {
538
- map.set(record.definition.id, record);
539
- }
540
- return map;
541
- }, [definitions]);
542
- const buckets = useMemo(() => {
543
- const map = {
544
- overdue: [],
545
- soon: [],
546
- today: [],
547
- later: [],
548
- };
549
- for (const reminder of reminders) {
550
- // Hide reminders whose backing definition is flagged as alarm — they
551
- // live in the Alarms tab.
552
- if (reminder.definitionId) {
553
- const record = definitionById.get(reminder.definitionId);
554
- const apple = readNativeAppleMetadata(record?.definition.metadata);
555
- if (apple?.kind === "alarm")
556
- continue;
557
- }
558
- map[classifyReminder(reminder.scheduledFor)].push(reminder);
559
- }
560
- for (const key of BUCKET_ORDER) {
561
- map[key].sort((a, b) => a.scheduledFor.localeCompare(b.scheduledFor));
562
- }
563
- return map;
564
- }, [reminders, definitionById]);
565
- const reminderCount = useMemo(() => buckets.overdue.length +
566
- buckets.soon.length +
567
- buckets.today.length +
568
- buckets.later.length, [buckets]);
569
- const alarmEntries = useMemo(() => buildAlarmEntries(definitions, reminders), [definitions, reminders]);
570
- const handleSnooze = useCallback(async (rowKey, occurrenceId, option) => {
571
- if (!occurrenceId)
572
- return;
573
- setRowBusy(rowKey, "snooze");
574
- try {
575
- await client.snoozeLifeOpsOccurrence(occurrenceId, option.request);
576
- setRowOptimistic(rowKey, "snoozed");
577
- // Refetch shortly so the optimistic state can be reconciled.
578
- setTimeout(() => {
579
- void load();
580
- }, 400);
581
- }
582
- catch (cause) {
583
- setError(cause instanceof Error ? cause.message : "Snooze failed.");
584
- }
585
- finally {
586
- setRowBusy(rowKey, null);
587
- }
588
- }, [load, setRowBusy, setRowOptimistic]);
589
- const handleComplete = useCallback(async (rowKey, occurrenceId) => {
590
- if (!occurrenceId)
591
- return;
592
- setRowBusy(rowKey, "complete");
593
- try {
594
- await client.completeLifeOpsOccurrence(occurrenceId, {});
595
- setRowOptimistic(rowKey, "completed");
596
- setTimeout(() => {
597
- void load();
598
- }, 400);
599
- }
600
- catch (cause) {
601
- setError(cause instanceof Error ? cause.message : "Complete failed.");
602
- }
603
- finally {
604
- setRowBusy(rowKey, null);
605
- }
606
- }, [load, setRowBusy, setRowOptimistic]);
607
- const handleCustomSnooze = useCallback(async (rowKey, occurrenceId) => {
608
- if (!occurrenceId)
609
- return;
610
- const raw = window.prompt("Snooze for how many minutes?", "45");
611
- if (!raw)
612
- return;
613
- const minutes = Number.parseInt(raw, 10);
614
- if (!Number.isFinite(minutes) || minutes <= 0) {
615
- setError("Snooze duration must be a positive number of minutes.");
616
- return;
617
- }
618
- await handleSnooze(rowKey, occurrenceId, {
619
- key: `custom-${minutes}`,
620
- label: `+${minutes}m`,
621
- request: { minutes },
622
- });
623
- }, [handleSnooze]);
624
- const handleDeleteAlarm = useCallback(async (definitionId) => {
625
- const rowKey = `alarm:${definitionId}`;
626
- setRowBusy(rowKey, "delete");
627
- try {
628
- await client.updateLifeOpsDefinition(definitionId, {
629
- status: "archived",
630
- });
631
- setRowOptimistic(rowKey, "deleted");
632
- setTimeout(() => {
633
- void load();
634
- }, 400);
635
- }
636
- catch (cause) {
637
- setError(cause instanceof Error ? cause.message : "Delete failed.");
638
- }
639
- finally {
640
- setRowBusy(rowKey, null);
641
- }
642
- }, [load, setRowBusy, setRowOptimistic]);
643
- const handleCreateAlarm = useCallback(async (input) => {
644
- setSavingAlarm(true);
645
- setError(null);
646
- try {
647
- const timezone = defaultTimezone();
648
- const cadence = pickAlarmCadence(input.hour, input.minute, input.weekdays, timezone);
649
- const title = input.label.length > 0
650
- ? input.label
651
- : `Alarm ${String(input.hour).padStart(2, "0")}:${String(input.minute).padStart(2, "0")}`;
652
- const request = {
653
- kind: "task",
654
- title,
655
- description: "Eliza alarm.",
656
- originalIntent: title,
657
- timezone,
658
- priority: 1,
659
- cadence,
660
- source: "lifeops_ui_alarm",
661
- metadata: {
662
- [NATIVE_APPLE_REMINDER_METADATA_KEY]: {
663
- kind: "alarm",
664
- provider: "apple_reminders",
665
- reminderId: null,
666
- source: "heuristic",
667
- },
668
- },
669
- reminderPlan: {
670
- steps: [
671
- {
672
- channel: "push",
673
- offsetMinutes: 0,
674
- label: "Alarm",
675
- },
676
- ],
677
- },
678
- };
679
- await client.createLifeOpsDefinition(request);
680
- setShowAddAlarm(false);
681
- await load();
682
- }
683
- catch (cause) {
684
- setError(cause instanceof Error
685
- ? cause.message
686
- : "Failed to create alarm.");
687
- }
688
- finally {
689
- setSavingAlarm(false);
690
- }
691
- }, [load]);
692
- return (_jsxs("div", { className: "space-y-4", "data-testid": "lifeops-reminders", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h2", { className: "text-base font-semibold tracking-tight text-txt", children: t("lifeopsreminders.title", { defaultValue: "Reminders" }) }), _jsx("span", { className: "rounded-full bg-bg-muted/40 px-2 py-0.5 text-[10px] font-medium text-muted tabular-nums", children: tab === "reminders" ? reminderCount : alarmEntries.length })] }), _jsx("div", { className: "flex items-center gap-2", children: _jsx("button", { type: "button", className: "inline-flex items-center gap-1.5 rounded-lg px-2 py-1 text-xs text-muted transition-colors hover:bg-bg-muted/40 hover:text-txt disabled:opacity-40", onClick: () => void load(), disabled: loading, "aria-label": t("common.refresh", { defaultValue: "Refresh" }), children: _jsx(RefreshCw, { className: `h-3.5 w-3.5 ${loading ? "animate-spin" : ""}` }) }) })] }), _jsxs("div", { role: "tablist", className: "inline-flex items-center gap-1 rounded-lg border border-border/15 bg-bg-muted/20 p-0.5 text-[11px] font-semibold", children: [_jsxs("button", { type: "button", role: "tab", "aria-selected": tab === "reminders", onClick: () => setTab("reminders"), className: [
693
- "inline-flex items-center gap-1.5 rounded-md px-3 py-1 transition-colors",
694
- tab === "reminders"
695
- ? "bg-card text-txt shadow-sm"
696
- : "text-muted hover:text-txt",
697
- ].join(" "), children: [_jsx(Bell, { className: "h-3 w-3", "aria-hidden": true }), "Reminders", _jsx("span", { className: "rounded-full bg-bg-muted/50 px-1.5 text-[10px] tabular-nums text-muted", children: reminderCount })] }), _jsxs("button", { type: "button", role: "tab", "aria-selected": tab === "alarms", onClick: () => setTab("alarms"), className: [
698
- "inline-flex items-center gap-1.5 rounded-md px-3 py-1 transition-colors",
699
- tab === "alarms"
700
- ? "bg-card text-txt shadow-sm"
701
- : "text-muted hover:text-txt",
702
- ].join(" "), children: [_jsx(AlarmClock, { className: "h-3 w-3", "aria-hidden": true }), "Alarms", _jsx("span", { className: "rounded-full bg-bg-muted/50 px-1.5 text-[10px] tabular-nums text-muted", children: alarmEntries.length })] })] }), error ? (_jsx("div", { className: "rounded-2xl border border-rose-500/30 bg-rose-500/10 px-3 py-2 text-xs text-rose-300", children: error })) : null, tab === "reminders" ? (_jsx(RemindersTabBody, { loading: loading, buckets: buckets, reminderCount: reminderCount, definitionById: definitionById, rowState: rowState, selection: selection, select: select, chatAboutReminder: chatAboutReminder, onSnooze: handleSnooze, onComplete: handleComplete, onCustomSnooze: handleCustomSnooze, loadingLabel: t("lifeopsreminders.loading", {
703
- defaultValue: "Loading reminders…",
704
- }), emptyLabel: t("lifeopsreminders.empty", {
705
- defaultValue: "All clear. No active reminders.",
706
- }) })) : (_jsx(AlarmsTabBody, { loading: loading, alarmEntries: alarmEntries, rowState: rowState, showAddAlarm: showAddAlarm, savingAlarm: savingAlarm, onSnooze: handleSnooze, onComplete: handleComplete, onCustomSnooze: handleCustomSnooze, onDelete: handleDeleteAlarm, onToggleAdd: () => setShowAddAlarm((prev) => !prev), onSaveAlarm: handleCreateAlarm, onCancelAdd: () => setShowAddAlarm(false) }))] }));
707
- }
708
- function RemindersTabBody({ loading, buckets, reminderCount, definitionById, rowState, selection, select, chatAboutReminder, onSnooze, onComplete, onCustomSnooze, loadingLabel, emptyLabel, }) {
709
- if (loading && reminderCount === 0) {
710
- return (_jsxs("div", { className: "flex items-center gap-2 py-6 text-xs text-muted", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), loadingLabel] }));
711
- }
712
- if (reminderCount === 0) {
713
- return (_jsx("div", { className: "rounded-2xl border border-border/12 bg-card/12 px-4 py-10 text-center text-xs text-muted", children: emptyLabel }));
714
- }
715
- return (_jsx("div", { className: "space-y-4", children: BUCKET_ORDER.map((urgency) => {
716
- const bucket = buckets[urgency];
717
- if (bucket.length === 0)
718
- return null;
719
- return (_jsxs("div", { className: "space-y-1.5", children: [_jsx(BucketHeader, { urgency: urgency, count: bucket.length }), _jsx("div", { className: "overflow-hidden rounded-2xl border border-border/12 bg-card/12", children: bucket.map((reminder) => {
720
- const rowKey = `${reminder.ownerType}:${reminder.ownerId}:${reminder.stepIndex}`;
721
- const record = reminder.definitionId
722
- ? definitionById.get(reminder.definitionId)
723
- : null;
724
- const apple = readNativeAppleMetadata(record?.definition.metadata);
725
- const recurrence = describeRecurrence(record?.definition.cadence);
726
- const isSelected = selection.reminderId === reminder.ownerId;
727
- const state = rowState[rowKey] ?? {
728
- busy: null,
729
- optimistic: "idle",
730
- };
731
- return (_jsx(ReminderRow, { reminder: reminder, urgency: urgency, isSelected: isSelected, apple: apple, recurrence: recurrence, busyAction: state.busy === "delete" ? null : state.busy, optimisticState: state.optimistic === "deleted"
732
- ? "idle"
733
- : state.optimistic, onSelect: () => select({
734
- reminderId: reminder.ownerId,
735
- eventId: reminder.eventId ?? null,
736
- }), onChat: () => chatAboutReminder(reminder), onSnooze: (option) => onSnooze(rowKey, reminder.occurrenceId, option), onComplete: () => onComplete(rowKey, reminder.occurrenceId), onCustomSnooze: () => onCustomSnooze(rowKey, reminder.occurrenceId) }, rowKey));
737
- }) })] }, urgency));
738
- }) }));
739
- }
740
- function AlarmsTabBody({ loading, alarmEntries, rowState, showAddAlarm, savingAlarm, onSnooze, onComplete, onCustomSnooze, onDelete, onToggleAdd, onSaveAlarm, onCancelAdd, }) {
741
- return (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-[11px] text-muted", children: "Clock-time alarms. Mirrored to your native Apple Reminders on macOS." }), _jsxs("button", { type: "button", onClick: onToggleAdd, className: "inline-flex items-center gap-1 rounded-lg border border-border/15 bg-bg-muted/30 px-2 py-1 text-[11px] font-semibold text-muted transition-colors hover:bg-bg-muted/60 hover:text-txt", children: [_jsx(Plus, { className: "h-3 w-3", "aria-hidden": true }), showAddAlarm ? "Close" : "Add alarm"] })] }), showAddAlarm ? (_jsx(AddAlarmForm, { saving: savingAlarm, onSave: onSaveAlarm, onCancel: onCancelAdd })) : null, loading && alarmEntries.length === 0 ? (_jsxs("div", { className: "flex items-center gap-2 py-6 text-xs text-muted", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Loading alarms\u2026"] })) : null, !loading && alarmEntries.length === 0 ? (_jsx("div", { className: "rounded-2xl border border-border/12 bg-card/12 px-4 py-10 text-center text-xs text-muted", children: "No alarms yet. Click \u201CAdd alarm\u201D to schedule one." })) : null, alarmEntries.length > 0 ? (_jsx("div", { className: "space-y-2", children: alarmEntries.map((entry) => {
742
- const rowKey = `alarm:${entry.definition.id}`;
743
- const state = rowState[rowKey] ?? {
744
- busy: null,
745
- optimistic: "idle",
746
- };
747
- return (_jsx(AlarmRow, { entry: entry, busyAction: state.busy, optimisticState: state.optimistic, onSnooze: (option) => onSnooze(rowKey, entry.reminder?.occurrenceId ?? null, option), onComplete: () => onComplete(rowKey, entry.reminder?.occurrenceId ?? null), onCustomSnooze: () => onCustomSnooze(rowKey, entry.reminder?.occurrenceId ?? null), onDelete: () => onDelete(entry.definition.id) }, entry.definition.id));
748
- }) })) : null] }));
749
- }