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

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 (777) hide show
  1. package/apps/app-companion/src/components/avatar/VrmViewer.d.ts.map +1 -1
  2. package/apps/app-companion/src/components/avatar/VrmViewer.js +2 -1
  3. package/apps/app-companion/src/components/companion/CompanionAppView.d.ts.map +1 -1
  4. package/apps/app-companion/src/components/companion/CompanionAppView.js +2 -1
  5. package/apps/app-companion/src/components/companion/CompanionView.d.ts.map +1 -1
  6. package/apps/app-companion/src/components/companion/CompanionView.js +2 -1
  7. package/apps/app-companion/src/components/companion/EmotePicker.d.ts.map +1 -1
  8. package/apps/app-companion/src/components/companion/EmotePicker.js +1 -1
  9. package/apps/app-companion/src/components/companion/scene-overlay-bridge.d.ts.map +1 -1
  10. package/apps/app-companion/src/components/companion/scene-overlay-bridge.js +2 -1
  11. package/apps/app-companion/src/index.d.ts +3 -3
  12. package/apps/app-companion/src/index.d.ts.map +1 -1
  13. package/apps/app-companion/src/index.js +3 -3
  14. package/apps/app-elizamaker/src/drop-service.d.ts +2 -2
  15. package/apps/app-elizamaker/src/drop-service.d.ts.map +1 -1
  16. package/apps/app-elizamaker/src/twitter-verify.d.ts +2 -2
  17. package/apps/app-elizamaker/src/twitter-verify.d.ts.map +1 -1
  18. package/apps/app-lifeops/src/api/client-lifeops.d.ts +1 -1
  19. package/apps/app-lifeops/src/api/client-lifeops.d.ts.map +1 -1
  20. package/apps/app-lifeops/src/contracts/index.d.ts +1 -1
  21. package/apps/app-lifeops/src/contracts/index.d.ts.map +1 -1
  22. package/apps/app-lifeops/src/contracts/index.js +1 -1
  23. package/apps/app-lifeops/src/inbox/message-fetcher.d.ts.map +1 -1
  24. package/apps/app-lifeops/src/inbox/message-fetcher.js +4 -2
  25. package/apps/app-lifeops/src/lifeops/google-managed-client.d.ts.map +1 -1
  26. package/apps/app-lifeops/src/lifeops/google-managed-client.js +4 -3
  27. package/apps/app-lifeops/src/lifeops/paypal-managed-client.d.ts.map +1 -1
  28. package/apps/app-lifeops/src/lifeops/paypal-managed-client.js +4 -3
  29. package/apps/app-lifeops/src/lifeops/plaid-managed-client.d.ts.map +1 -1
  30. package/apps/app-lifeops/src/lifeops/plaid-managed-client.js +4 -3
  31. package/apps/app-lifeops/src/lifeops/repository.d.ts +12 -1
  32. package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
  33. package/apps/app-lifeops/src/lifeops/repository.js +135 -0
  34. package/apps/app-lifeops/src/lifeops/schedule-sync-client.js +1 -1
  35. package/apps/app-lifeops/src/lifeops/schema.d.ts +4587 -3791
  36. package/apps/app-lifeops/src/lifeops/schema.d.ts.map +1 -1
  37. package/apps/app-lifeops/src/lifeops/schema.js +30 -0
  38. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts +2 -0
  39. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts.map +1 -1
  40. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.js +103 -13
  41. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts.map +1 -1
  42. package/apps/app-lifeops/src/routes/cloud-features-routes.js +2 -1
  43. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts.map +1 -1
  44. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.js +2 -1
  45. package/package.json +1 -1
  46. package/packages/agent/src/actions/grounded-action-reply.d.ts.map +1 -1
  47. package/packages/agent/src/actions/grounded-action-reply.js +1 -1
  48. package/packages/agent/src/actions/index.d.ts +1 -0
  49. package/packages/agent/src/actions/index.d.ts.map +1 -1
  50. package/packages/agent/src/actions/index.js +1 -0
  51. package/packages/agent/src/actions/scratchpad.d.ts +7 -0
  52. package/packages/agent/src/actions/scratchpad.d.ts.map +1 -0
  53. package/packages/agent/src/actions/scratchpad.js +394 -0
  54. package/packages/agent/src/actions/settings-actions.js +1 -1
  55. package/packages/agent/src/actions/terminal.d.ts.map +1 -1
  56. package/packages/agent/src/actions/terminal.js +10 -2
  57. package/packages/agent/src/api/apps-routes.d.ts.map +1 -1
  58. package/packages/agent/src/api/apps-routes.js +171 -0
  59. package/packages/agent/src/api/binance-skill-helpers.d.ts.map +1 -1
  60. package/packages/agent/src/api/chat-routes.d.ts +3 -0
  61. package/packages/agent/src/api/chat-routes.d.ts.map +1 -1
  62. package/packages/agent/src/api/chat-routes.js +33 -14
  63. package/packages/agent/src/api/conversation-routes.js +2 -2
  64. package/packages/agent/src/api/misc-routes.d.ts.map +1 -1
  65. package/packages/agent/src/api/misc-routes.js +2 -2
  66. package/packages/agent/src/api/permissions-routes.js +1 -1
  67. package/packages/agent/src/api/plugin-routes.d.ts.map +1 -1
  68. package/packages/agent/src/api/plugin-routes.js +7 -1
  69. package/packages/agent/src/api/provider-switch-config.js +1 -1
  70. package/packages/agent/src/api/registry-service.d.ts +1 -1
  71. package/packages/agent/src/api/registry-service.d.ts.map +1 -1
  72. package/packages/agent/src/api/server-auth.d.ts.map +1 -1
  73. package/packages/agent/src/api/server-auth.js +119 -1
  74. package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -1
  75. package/packages/agent/src/api/server-helpers-auth.js +119 -1
  76. package/packages/agent/src/api/server-helpers-swarm.d.ts +1 -1
  77. package/packages/agent/src/api/server-helpers-swarm.d.ts.map +1 -1
  78. package/packages/agent/src/api/server-helpers.js +1 -1
  79. package/packages/agent/src/api/server-types.d.ts +2 -2
  80. package/packages/agent/src/api/server-types.d.ts.map +1 -1
  81. package/packages/agent/src/api/server.d.ts.map +1 -1
  82. package/packages/agent/src/api/server.js +5 -4
  83. package/packages/agent/src/api/training-backend-check.d.ts +1 -1
  84. package/packages/agent/src/api/training-backend-check.d.ts.map +1 -1
  85. package/packages/agent/src/api/training-backend-check.js +1 -1
  86. package/packages/agent/src/api/training-routes.d.ts +1 -1
  87. package/packages/agent/src/api/training-routes.d.ts.map +1 -1
  88. package/packages/agent/src/api/training-routes.js +1 -1
  89. package/packages/agent/src/api/training-service-like.d.ts +1 -1
  90. package/packages/agent/src/api/training-service-like.d.ts.map +1 -1
  91. package/packages/agent/src/api/trajectory-routes.d.ts +1 -1
  92. package/packages/agent/src/api/trajectory-routes.d.ts.map +1 -1
  93. package/packages/agent/src/api/trajectory-routes.js +1 -1
  94. package/packages/agent/src/api/wallet-capability.js +1 -1
  95. package/packages/agent/src/api/wallet-evm-balance.js +1 -1
  96. package/packages/agent/src/api/wallet.d.ts +1 -1
  97. package/packages/agent/src/api/wallet.d.ts.map +1 -1
  98. package/packages/agent/src/api/wallet.js +2 -2
  99. package/packages/agent/src/awareness/index.d.ts +2 -0
  100. package/packages/agent/src/awareness/index.d.ts.map +1 -0
  101. package/packages/agent/src/awareness/index.js +1 -0
  102. package/packages/agent/src/config/config.d.ts.map +1 -1
  103. package/packages/agent/src/config/config.js +2 -0
  104. package/packages/agent/src/config/index.d.ts +1 -0
  105. package/packages/agent/src/config/index.d.ts.map +1 -1
  106. package/packages/agent/src/config/index.js +1 -0
  107. package/packages/agent/src/config/model-metadata.d.ts +20 -0
  108. package/packages/agent/src/config/model-metadata.d.ts.map +1 -0
  109. package/packages/agent/src/config/model-metadata.js +133 -0
  110. package/packages/agent/src/config/zod-schema.core.d.ts +28 -28
  111. package/packages/agent/src/config/zod-schema.core.d.ts.map +1 -1
  112. package/packages/agent/src/config/zod-schema.core.js +16 -9
  113. package/packages/agent/src/config/zod-schema.d.ts +10 -10
  114. package/packages/agent/src/index.d.ts +6 -11
  115. package/packages/agent/src/index.d.ts.map +1 -1
  116. package/packages/agent/src/index.js +8 -10
  117. package/packages/agent/src/providers/media-provider.js +1 -1
  118. package/packages/agent/src/runtime/custom-actions.d.ts.map +1 -1
  119. package/packages/agent/src/runtime/custom-actions.js +1 -1
  120. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
  121. package/packages/agent/src/runtime/eliza-plugin.js +6 -0
  122. package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
  123. package/packages/agent/src/runtime/eliza.js +7 -7
  124. package/packages/agent/src/runtime/prompt-optimization.d.ts +24 -1
  125. package/packages/agent/src/runtime/prompt-optimization.d.ts.map +1 -1
  126. package/packages/agent/src/runtime/prompt-optimization.js +292 -27
  127. package/packages/agent/src/runtime/trajectory-internals.d.ts +1 -0
  128. package/packages/agent/src/runtime/trajectory-internals.d.ts.map +1 -1
  129. package/packages/agent/src/runtime/trajectory-storage.d.ts.map +1 -1
  130. package/packages/agent/src/runtime/trajectory-storage.js +3 -0
  131. package/packages/agent/src/services/index.d.ts +4 -4
  132. package/packages/agent/src/services/index.d.ts.map +1 -1
  133. package/packages/agent/src/services/index.js +2 -2
  134. package/packages/agent/src/services/registry-client-app-meta.d.ts.map +1 -1
  135. package/packages/agent/src/services/registry-client-app-meta.js +0 -61
  136. package/packages/agent/src/services/skill-marketplace.d.ts.map +1 -1
  137. package/packages/app-core/src/App.js +1 -1
  138. package/packages/app-core/src/api/auth.js +1 -1
  139. package/packages/app-core/src/api/client-agent.d.ts +1 -2
  140. package/packages/app-core/src/api/client-agent.d.ts.map +1 -1
  141. package/packages/app-core/src/api/client-chat.d.ts +10 -1
  142. package/packages/app-core/src/api/client-chat.d.ts.map +1 -1
  143. package/packages/app-core/src/api/client-chat.js +33 -0
  144. package/packages/app-core/src/api/client-skills.d.ts.map +1 -1
  145. package/packages/app-core/src/api/client-types-chat.d.ts +1 -0
  146. package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -1
  147. package/packages/app-core/src/api/client-types-config.d.ts +2 -2
  148. package/packages/app-core/src/api/client-types-config.d.ts.map +1 -1
  149. package/packages/app-core/src/api/client-wallet.d.ts +2 -4
  150. package/packages/app-core/src/api/client-wallet.d.ts.map +1 -1
  151. package/packages/app-core/src/api/client.d.ts +3 -4
  152. package/packages/app-core/src/api/client.d.ts.map +1 -1
  153. package/packages/app-core/src/api/client.js +1 -1
  154. package/packages/app-core/src/api/compat-route-shared.d.ts +1 -1
  155. package/packages/app-core/src/api/compat-route-shared.d.ts.map +1 -1
  156. package/packages/app-core/src/api/compat-route-shared.js +117 -1
  157. package/packages/app-core/src/api/server-cloud-tts.js +1 -1
  158. package/packages/app-core/src/api/trusted-local-request.d.ts +4 -0
  159. package/packages/app-core/src/api/trusted-local-request.d.ts.map +1 -0
  160. package/packages/app-core/src/api/trusted-local-request.js +176 -0
  161. package/packages/app-core/src/autonomy/index.d.ts.map +1 -1
  162. package/packages/app-core/src/autonomy/index.js +3 -1
  163. package/packages/app-core/src/components/auth/LoginView.d.ts +3 -23
  164. package/packages/app-core/src/components/auth/LoginView.d.ts.map +1 -1
  165. package/packages/app-core/src/components/auth/LoginView.js +43 -33
  166. package/packages/app-core/src/components/chat/AppsSection.d.ts.map +1 -1
  167. package/packages/app-core/src/components/chat/AppsSection.js +61 -6
  168. package/packages/app-core/src/components/chat/MessageContent.d.ts.map +1 -1
  169. package/packages/app-core/src/components/chat/MessageContent.js +26 -3
  170. package/packages/app-core/src/components/chat/message-choice-parser.d.ts +20 -0
  171. package/packages/app-core/src/components/chat/message-choice-parser.d.ts.map +1 -0
  172. package/packages/app-core/src/components/chat/message-choice-parser.js +53 -0
  173. package/packages/app-core/src/components/chat/widgets/ChoiceWidget.d.ts +24 -0
  174. package/packages/app-core/src/components/chat/widgets/ChoiceWidget.d.ts.map +1 -0
  175. package/packages/app-core/src/components/chat/widgets/ChoiceWidget.js +38 -0
  176. package/packages/app-core/src/components/connectors/ConnectorSetupPanel.js +1 -1
  177. package/packages/app-core/src/components/custom-actions/CustomActionEditor.d.ts.map +1 -1
  178. package/packages/app-core/src/components/custom-actions/CustomActionsPanel.d.ts.map +1 -1
  179. package/packages/app-core/src/components/custom-actions/CustomActionsView.d.ts.map +1 -1
  180. package/packages/app-core/src/components/custom-actions/custom-action-form.d.ts.map +1 -1
  181. package/packages/app-core/src/components/pages/BrowserWorkspaceView.js +1 -1
  182. package/packages/app-core/src/components/pages/KnowledgeView.d.ts.map +1 -1
  183. package/packages/app-core/src/components/pages/KnowledgeView.js +11 -1
  184. package/packages/app-core/src/components/pages/PluginConfigForm.d.ts.map +1 -1
  185. package/packages/app-core/src/components/pages/PluginConfigForm.js +1 -1
  186. package/packages/app-core/src/components/pages/ScratchpadView.d.ts +2 -0
  187. package/packages/app-core/src/components/pages/ScratchpadView.d.ts.map +1 -0
  188. package/packages/app-core/src/components/pages/ScratchpadView.js +364 -0
  189. package/packages/app-core/src/components/pages/SettingsView.d.ts.map +1 -1
  190. package/packages/app-core/src/components/pages/SettingsView.js +29 -5
  191. package/packages/app-core/src/components/pages/VectorBrowserView.d.ts.map +1 -1
  192. package/packages/app-core/src/components/pages/VectorBrowserView.js +1 -1
  193. package/packages/app-core/src/components/pages/config-page-sections.d.ts +1 -1
  194. package/packages/app-core/src/components/pages/config-page-sections.d.ts.map +1 -1
  195. package/packages/app-core/src/components/pages/config-page-sections.js +1 -1
  196. package/packages/app-core/src/components/pages/plugin-list-utils.d.ts +1 -1
  197. package/packages/app-core/src/components/pages/plugin-list-utils.d.ts.map +1 -1
  198. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.d.ts +1 -1
  199. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.d.ts.map +1 -1
  200. package/packages/app-core/src/components/pages/useBrowserWorkspaceWalletBridge.js +1 -1
  201. package/packages/app-core/src/components/settings/ApiKeyConfig.js +1 -1
  202. package/packages/app-core/src/components/settings/AppearanceSettingsSection.d.ts.map +1 -1
  203. package/packages/app-core/src/components/settings/AppearanceSettingsSection.js +1 -1
  204. package/packages/app-core/src/components/settings/AppsManagementSection.d.ts +12 -0
  205. package/packages/app-core/src/components/settings/AppsManagementSection.d.ts.map +1 -0
  206. package/packages/app-core/src/components/settings/AppsManagementSection.js +285 -0
  207. package/packages/app-core/src/components/settings/PermissionsSection.js +1 -1
  208. package/packages/app-core/src/components/settings/ProviderSwitcher.d.ts.map +1 -1
  209. package/packages/app-core/src/components/settings/ProviderSwitcher.js +2 -2
  210. package/packages/app-core/src/components/settings/SecuritySettingsSection.d.ts.map +1 -1
  211. package/packages/app-core/src/components/settings/SecuritySettingsSection.js +150 -33
  212. package/packages/app-core/src/components/settings/cloud-model-schema.d.ts +1 -1
  213. package/packages/app-core/src/components/settings/cloud-model-schema.d.ts.map +1 -1
  214. package/packages/app-core/src/components/shell/Header.d.ts.map +1 -1
  215. package/packages/app-core/src/components/shell/Header.js +28 -1
  216. package/packages/app-core/src/components/steward/injected.d.ts.map +1 -1
  217. package/packages/app-core/src/components/steward/injected.js +1 -1
  218. package/packages/app-core/src/components/training/injected.d.ts.map +1 -1
  219. package/packages/app-core/src/components/training/injected.js +1 -1
  220. package/packages/app-core/src/config/boot-config-store.d.ts +1 -1
  221. package/packages/app-core/src/config/boot-config-store.d.ts.map +1 -1
  222. package/packages/app-core/src/content-packs/bundled-packs.d.ts.map +1 -1
  223. package/packages/app-core/src/hooks/index.d.ts +0 -2
  224. package/packages/app-core/src/hooks/index.d.ts.map +1 -1
  225. package/packages/app-core/src/hooks/index.js +0 -2
  226. package/packages/app-core/src/hooks/useAuthStatus.d.ts +5 -0
  227. package/packages/app-core/src/hooks/useAuthStatus.d.ts.map +1 -1
  228. package/packages/app-core/src/hooks/useAuthStatus.js +41 -18
  229. package/packages/app-core/src/hooks/useSignalPairing.d.ts +1 -1
  230. package/packages/app-core/src/hooks/useSignalPairing.d.ts.map +1 -1
  231. package/packages/app-core/src/hooks/useWhatsAppPairing.d.ts +1 -1
  232. package/packages/app-core/src/hooks/useWhatsAppPairing.d.ts.map +1 -1
  233. package/packages/app-core/src/i18n/locales/en.json +0 -1
  234. package/packages/app-core/src/i18n/locales/es.json +0 -1
  235. package/packages/app-core/src/i18n/locales/ko.json +0 -1
  236. package/packages/app-core/src/i18n/locales/pt.json +0 -1
  237. package/packages/app-core/src/i18n/locales/tl.json +0 -1
  238. package/packages/app-core/src/i18n/locales/vi.json +0 -1
  239. package/packages/app-core/src/i18n/locales/zh-CN.json +0 -1
  240. package/packages/app-core/src/index.d.ts +0 -1
  241. package/packages/app-core/src/index.d.ts.map +1 -1
  242. package/packages/app-core/src/index.js +0 -1
  243. package/packages/app-core/src/runtime/channel-plugin-map.d.ts.map +1 -1
  244. package/packages/app-core/src/runtime/channel-plugin-map.js +1 -1
  245. package/packages/app-core/src/runtime/plugin-manager-guard.d.ts.map +1 -1
  246. package/packages/app-core/src/runtime/plugin-manager-guard.js +1 -1
  247. package/packages/app-core/src/services/plugin-installer.d.ts.map +1 -1
  248. package/packages/app-core/src/services/plugin-installer.js +1 -8
  249. package/packages/app-core/src/state/index.d.ts +0 -1
  250. package/packages/app-core/src/state/index.d.ts.map +1 -1
  251. package/packages/app-core/src/state/index.js +0 -1
  252. package/packages/app-core/src/state/startup-phase-restore.d.ts.map +1 -1
  253. package/packages/app-core/src/state/startup-phase-restore.js +1 -1
  254. package/packages/app-core/src/state/useOnboardingState.js +2 -2
  255. package/packages/app-core/src/state/usePluginsSkillsState.d.ts +4 -4
  256. package/packages/app-core/src/types/index.d.ts +1 -1
  257. package/packages/app-core/src/types/index.d.ts.map +1 -1
  258. package/packages/shared/src/contracts/index.d.ts +1 -0
  259. package/packages/shared/src/contracts/index.d.ts.map +1 -1
  260. package/packages/shared/src/contracts/index.js +1 -0
  261. package/packages/shared/src/contracts/scratchpad.d.ts +136 -0
  262. package/packages/shared/src/contracts/scratchpad.d.ts.map +1 -0
  263. package/packages/shared/src/contracts/scratchpad.js +90 -0
  264. package/packages/shared/src/index.d.ts +13 -13
  265. package/packages/shared/src/index.d.ts.map +1 -1
  266. package/packages/shared/src/index.js +19 -19
  267. package/packages/shared/src/spoken-text.js +1 -1
  268. package/packages/typescript/src/features/advanced-capabilities/evaluators/factExtractor.d.ts.map +1 -1
  269. package/packages/typescript/src/features/advanced-capabilities/evaluators/factExtractor.js +12 -6
  270. package/packages/typescript/src/generated/action-docs.d.ts +25 -0
  271. package/packages/typescript/src/generated/action-docs.d.ts.map +1 -1
  272. package/packages/typescript/src/generated/action-docs.js +51 -0
  273. package/packages/typescript/src/services/message.d.ts.map +1 -1
  274. package/packages/typescript/src/services/message.js +1 -3
  275. package/packages/typescript/src/types/tools.d.ts.map +1 -1
  276. package/packages/typescript/src/types/tools.js +7 -3
  277. package/apps/app-lifeops/src/action.d.ts +0 -3
  278. package/apps/app-lifeops/src/action.d.ts.map +0 -1
  279. package/apps/app-lifeops/src/action.js +0 -351
  280. package/apps/app-lifeops/src/actions/activity-report.d.ts +0 -13
  281. package/apps/app-lifeops/src/actions/activity-report.d.ts.map +0 -1
  282. package/apps/app-lifeops/src/actions/activity-report.js +0 -313
  283. package/apps/app-lifeops/src/actions/app-blocker.d.ts +0 -7
  284. package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +0 -1
  285. package/apps/app-lifeops/src/actions/app-blocker.js +0 -454
  286. package/apps/app-lifeops/src/actions/approval.d.ts +0 -21
  287. package/apps/app-lifeops/src/actions/approval.d.ts.map +0 -1
  288. package/apps/app-lifeops/src/actions/approval.js +0 -342
  289. package/apps/app-lifeops/src/actions/autofill.d.ts +0 -35
  290. package/apps/app-lifeops/src/actions/autofill.d.ts.map +0 -1
  291. package/apps/app-lifeops/src/actions/autofill.js +0 -475
  292. package/apps/app-lifeops/src/actions/book-travel-executor.d.ts +0 -9
  293. package/apps/app-lifeops/src/actions/book-travel-executor.d.ts.map +0 -1
  294. package/apps/app-lifeops/src/actions/book-travel-executor.js +0 -65
  295. package/apps/app-lifeops/src/actions/book-travel.d.ts +0 -5
  296. package/apps/app-lifeops/src/actions/book-travel.d.ts.map +0 -1
  297. package/apps/app-lifeops/src/actions/book-travel.js +0 -491
  298. package/apps/app-lifeops/src/actions/calendar.d.ts +0 -19
  299. package/apps/app-lifeops/src/actions/calendar.d.ts.map +0 -1
  300. package/apps/app-lifeops/src/actions/calendar.js +0 -3189
  301. package/apps/app-lifeops/src/actions/calendly.d.ts +0 -3
  302. package/apps/app-lifeops/src/actions/calendly.d.ts.map +0 -1
  303. package/apps/app-lifeops/src/actions/calendly.js +0 -285
  304. package/apps/app-lifeops/src/actions/chat-thread-control.d.ts +0 -3
  305. package/apps/app-lifeops/src/actions/chat-thread-control.d.ts.map +0 -1
  306. package/apps/app-lifeops/src/actions/chat-thread-control.js +0 -260
  307. package/apps/app-lifeops/src/actions/checkin.d.ts +0 -8
  308. package/apps/app-lifeops/src/actions/checkin.d.ts.map +0 -1
  309. package/apps/app-lifeops/src/actions/checkin.js +0 -230
  310. package/apps/app-lifeops/src/actions/computer-use.d.ts +0 -14
  311. package/apps/app-lifeops/src/actions/computer-use.d.ts.map +0 -1
  312. package/apps/app-lifeops/src/actions/computer-use.js +0 -365
  313. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +0 -34
  314. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +0 -1
  315. package/apps/app-lifeops/src/actions/cross-channel-send.js +0 -964
  316. package/apps/app-lifeops/src/actions/device-bus.d.ts +0 -19
  317. package/apps/app-lifeops/src/actions/device-bus.d.ts.map +0 -1
  318. package/apps/app-lifeops/src/actions/device-bus.js +0 -386
  319. package/apps/app-lifeops/src/actions/dossier.d.ts +0 -5
  320. package/apps/app-lifeops/src/actions/dossier.d.ts.map +0 -1
  321. package/apps/app-lifeops/src/actions/dossier.js +0 -227
  322. package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts +0 -5
  323. package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts.map +0 -1
  324. package/apps/app-lifeops/src/actions/email-unsubscribe.js +0 -172
  325. package/apps/app-lifeops/src/actions/gmail.d.ts +0 -57
  326. package/apps/app-lifeops/src/actions/gmail.d.ts.map +0 -1
  327. package/apps/app-lifeops/src/actions/gmail.js +0 -2540
  328. package/apps/app-lifeops/src/actions/health.d.ts +0 -9
  329. package/apps/app-lifeops/src/actions/health.d.ts.map +0 -1
  330. package/apps/app-lifeops/src/actions/health.js +0 -398
  331. package/apps/app-lifeops/src/actions/inbox.d.ts +0 -5
  332. package/apps/app-lifeops/src/actions/inbox.d.ts.map +0 -1
  333. package/apps/app-lifeops/src/actions/inbox.js +0 -1244
  334. package/apps/app-lifeops/src/actions/intent-sync.d.ts +0 -5
  335. package/apps/app-lifeops/src/actions/intent-sync.d.ts.map +0 -1
  336. package/apps/app-lifeops/src/actions/intent-sync.js +0 -326
  337. package/apps/app-lifeops/src/actions/life-goal-extractor.d.ts +0 -69
  338. package/apps/app-lifeops/src/actions/life-goal-extractor.d.ts.map +0 -1
  339. package/apps/app-lifeops/src/actions/life-goal-extractor.js +0 -420
  340. package/apps/app-lifeops/src/actions/life-param-extractor.d.ts +0 -78
  341. package/apps/app-lifeops/src/actions/life-param-extractor.d.ts.map +0 -1
  342. package/apps/app-lifeops/src/actions/life-param-extractor.js +0 -431
  343. package/apps/app-lifeops/src/actions/life-recent-context.d.ts +0 -9
  344. package/apps/app-lifeops/src/actions/life-recent-context.d.ts.map +0 -1
  345. package/apps/app-lifeops/src/actions/life-recent-context.js +0 -78
  346. package/apps/app-lifeops/src/actions/life-update-extractor.d.ts +0 -27
  347. package/apps/app-lifeops/src/actions/life-update-extractor.d.ts.map +0 -1
  348. package/apps/app-lifeops/src/actions/life-update-extractor.js +0 -195
  349. package/apps/app-lifeops/src/actions/life.d.ts +0 -5
  350. package/apps/app-lifeops/src/actions/life.d.ts.map +0 -1
  351. package/apps/app-lifeops/src/actions/life.extractor.d.ts +0 -18
  352. package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +0 -1
  353. package/apps/app-lifeops/src/actions/life.extractor.js +0 -363
  354. package/apps/app-lifeops/src/actions/life.js +0 -3247
  355. package/apps/app-lifeops/src/actions/lifeops-connector.d.ts +0 -5
  356. package/apps/app-lifeops/src/actions/lifeops-connector.d.ts.map +0 -1
  357. package/apps/app-lifeops/src/actions/lifeops-connector.js +0 -683
  358. package/apps/app-lifeops/src/actions/lifeops-extraction-config.d.ts +0 -16
  359. package/apps/app-lifeops/src/actions/lifeops-extraction-config.d.ts.map +0 -1
  360. package/apps/app-lifeops/src/actions/lifeops-extraction-config.js +0 -25
  361. package/apps/app-lifeops/src/actions/lifeops-google-helpers.d.ts +0 -64
  362. package/apps/app-lifeops/src/actions/lifeops-google-helpers.d.ts.map +0 -1
  363. package/apps/app-lifeops/src/actions/lifeops-google-helpers.js +0 -671
  364. package/apps/app-lifeops/src/actions/lifeops-mutate.d.ts +0 -5
  365. package/apps/app-lifeops/src/actions/lifeops-mutate.d.ts.map +0 -1
  366. package/apps/app-lifeops/src/actions/lifeops-mutate.js +0 -769
  367. package/apps/app-lifeops/src/actions/list-remote-sessions.d.ts +0 -6
  368. package/apps/app-lifeops/src/actions/list-remote-sessions.d.ts.map +0 -1
  369. package/apps/app-lifeops/src/actions/list-remote-sessions.js +0 -45
  370. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +0 -17
  371. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +0 -1
  372. package/apps/app-lifeops/src/actions/non-actionable-request.js +0 -25
  373. package/apps/app-lifeops/src/actions/owner-app-block.d.ts +0 -12
  374. package/apps/app-lifeops/src/actions/owner-app-block.d.ts.map +0 -1
  375. package/apps/app-lifeops/src/actions/owner-app-block.js +0 -144
  376. package/apps/app-lifeops/src/actions/owner-calendar.d.ts +0 -15
  377. package/apps/app-lifeops/src/actions/owner-calendar.d.ts.map +0 -1
  378. package/apps/app-lifeops/src/actions/owner-calendar.js +0 -762
  379. package/apps/app-lifeops/src/actions/owner-inbox.d.ts +0 -5
  380. package/apps/app-lifeops/src/actions/owner-inbox.d.ts.map +0 -1
  381. package/apps/app-lifeops/src/actions/owner-inbox.js +0 -662
  382. package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts +0 -12
  383. package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts.map +0 -1
  384. package/apps/app-lifeops/src/actions/owner-remote-desktop.js +0 -173
  385. package/apps/app-lifeops/src/actions/owner-schedule.d.ts +0 -3
  386. package/apps/app-lifeops/src/actions/owner-schedule.d.ts.map +0 -1
  387. package/apps/app-lifeops/src/actions/owner-schedule.js +0 -174
  388. package/apps/app-lifeops/src/actions/owner-screen-time.d.ts +0 -10
  389. package/apps/app-lifeops/src/actions/owner-screen-time.d.ts.map +0 -1
  390. package/apps/app-lifeops/src/actions/owner-screen-time.js +0 -213
  391. package/apps/app-lifeops/src/actions/owner-website-block.d.ts +0 -12
  392. package/apps/app-lifeops/src/actions/owner-website-block.d.ts.map +0 -1
  393. package/apps/app-lifeops/src/actions/owner-website-block.js +0 -424
  394. package/apps/app-lifeops/src/actions/password-manager.d.ts +0 -5
  395. package/apps/app-lifeops/src/actions/password-manager.d.ts.map +0 -1
  396. package/apps/app-lifeops/src/actions/password-manager.js +0 -217
  397. package/apps/app-lifeops/src/actions/payments.d.ts +0 -5
  398. package/apps/app-lifeops/src/actions/payments.d.ts.map +0 -1
  399. package/apps/app-lifeops/src/actions/payments.js +0 -236
  400. package/apps/app-lifeops/src/actions/relationships.d.ts +0 -12
  401. package/apps/app-lifeops/src/actions/relationships.d.ts.map +0 -1
  402. package/apps/app-lifeops/src/actions/relationships.js +0 -880
  403. package/apps/app-lifeops/src/actions/remote-desktop.d.ts +0 -5
  404. package/apps/app-lifeops/src/actions/remote-desktop.d.ts.map +0 -1
  405. package/apps/app-lifeops/src/actions/remote-desktop.js +0 -248
  406. package/apps/app-lifeops/src/actions/revoke-remote-session.d.ts +0 -6
  407. package/apps/app-lifeops/src/actions/revoke-remote-session.d.ts.map +0 -1
  408. package/apps/app-lifeops/src/actions/revoke-remote-session.js +0 -73
  409. package/apps/app-lifeops/src/actions/schedule-x-dm-reply.d.ts +0 -3
  410. package/apps/app-lifeops/src/actions/schedule-x-dm-reply.d.ts.map +0 -1
  411. package/apps/app-lifeops/src/actions/schedule-x-dm-reply.js +0 -134
  412. package/apps/app-lifeops/src/actions/scheduled-trigger-task.d.ts +0 -19
  413. package/apps/app-lifeops/src/actions/scheduled-trigger-task.d.ts.map +0 -1
  414. package/apps/app-lifeops/src/actions/scheduled-trigger-task.js +0 -82
  415. package/apps/app-lifeops/src/actions/scheduling.d.ts +0 -70
  416. package/apps/app-lifeops/src/actions/scheduling.d.ts.map +0 -1
  417. package/apps/app-lifeops/src/actions/scheduling.js +0 -1078
  418. package/apps/app-lifeops/src/actions/screen-time.d.ts +0 -8
  419. package/apps/app-lifeops/src/actions/screen-time.d.ts.map +0 -1
  420. package/apps/app-lifeops/src/actions/screen-time.js +0 -249
  421. package/apps/app-lifeops/src/actions/search-across-channels.d.ts +0 -13
  422. package/apps/app-lifeops/src/actions/search-across-channels.d.ts.map +0 -1
  423. package/apps/app-lifeops/src/actions/search-across-channels.js +0 -338
  424. package/apps/app-lifeops/src/actions/start-remote-session.d.ts +0 -14
  425. package/apps/app-lifeops/src/actions/start-remote-session.d.ts.map +0 -1
  426. package/apps/app-lifeops/src/actions/start-remote-session.js +0 -139
  427. package/apps/app-lifeops/src/actions/subscriptions.d.ts +0 -5
  428. package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +0 -1
  429. package/apps/app-lifeops/src/actions/subscriptions.js +0 -404
  430. package/apps/app-lifeops/src/actions/timezone-normalization.d.ts +0 -4
  431. package/apps/app-lifeops/src/actions/timezone-normalization.d.ts.map +0 -1
  432. package/apps/app-lifeops/src/actions/timezone-normalization.js +0 -159
  433. package/apps/app-lifeops/src/actions/twilio-call.d.ts +0 -20
  434. package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +0 -1
  435. package/apps/app-lifeops/src/actions/twilio-call.js +0 -853
  436. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts +0 -5
  437. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +0 -1
  438. package/apps/app-lifeops/src/actions/update-owner-profile.js +0 -181
  439. package/apps/app-lifeops/src/actions/x-read.d.ts +0 -5
  440. package/apps/app-lifeops/src/actions/x-read.d.ts.map +0 -1
  441. package/apps/app-lifeops/src/actions/x-read.js +0 -561
  442. package/apps/app-lifeops/src/activity-profile/activity-tracker-service.d.ts +0 -36
  443. package/apps/app-lifeops/src/activity-profile/activity-tracker-service.d.ts.map +0 -1
  444. package/apps/app-lifeops/src/activity-profile/activity-tracker-service.js +0 -160
  445. package/apps/app-lifeops/src/activity-profile/analyzer.d.ts +0 -23
  446. package/apps/app-lifeops/src/activity-profile/analyzer.d.ts.map +0 -1
  447. package/apps/app-lifeops/src/activity-profile/analyzer.js +0 -555
  448. package/apps/app-lifeops/src/activity-profile/presence-signal-bridge-service.d.ts +0 -14
  449. package/apps/app-lifeops/src/activity-profile/presence-signal-bridge-service.d.ts.map +0 -1
  450. package/apps/app-lifeops/src/activity-profile/presence-signal-bridge-service.js +0 -133
  451. package/apps/app-lifeops/src/activity-profile/proactive-planner.d.ts +0 -71
  452. package/apps/app-lifeops/src/activity-profile/proactive-planner.d.ts.map +0 -1
  453. package/apps/app-lifeops/src/activity-profile/proactive-planner.js +0 -567
  454. package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts +0 -32
  455. package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts.map +0 -1
  456. package/apps/app-lifeops/src/activity-profile/proactive-worker.js +0 -676
  457. package/apps/app-lifeops/src/activity-profile/service.d.ts +0 -11
  458. package/apps/app-lifeops/src/activity-profile/service.d.ts.map +0 -1
  459. package/apps/app-lifeops/src/activity-profile/service.js +0 -246
  460. package/apps/app-lifeops/src/app-blocker/access.d.ts +0 -8
  461. package/apps/app-lifeops/src/app-blocker/access.d.ts.map +0 -1
  462. package/apps/app-lifeops/src/app-blocker/access.js +0 -35
  463. package/apps/app-lifeops/src/app-blocker/engine.d.ts +0 -10
  464. package/apps/app-lifeops/src/app-blocker/engine.d.ts.map +0 -1
  465. package/apps/app-lifeops/src/app-blocker/engine.js +0 -43
  466. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts +0 -3
  467. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts.map +0 -1
  468. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.js +0 -189
  469. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts +0 -2
  470. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts.map +0 -1
  471. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.js +0 -1065
  472. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts +0 -7
  473. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts.map +0 -1
  474. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.js +0 -74
  475. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts +0 -14
  476. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts.map +0 -1
  477. package/apps/app-lifeops/src/components/DataSourcesStrip.js +0 -36
  478. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts +0 -23
  479. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts.map +0 -1
  480. package/apps/app-lifeops/src/components/EventEditorDrawer.js +0 -514
  481. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts +0 -2
  482. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts.map +0 -1
  483. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.js +0 -10
  484. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts +0 -15
  485. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts.map +0 -1
  486. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.js +0 -515
  487. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts +0 -34
  488. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts.map +0 -1
  489. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.js +0 -175
  490. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts +0 -2
  491. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts.map +0 -1
  492. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.js +0 -99
  493. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts +0 -37
  494. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts.map +0 -1
  495. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.js +0 -88
  496. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts +0 -13
  497. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts.map +0 -1
  498. package/apps/app-lifeops/src/components/LifeOpsInboxSection.js +0 -490
  499. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts +0 -12
  500. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts.map +0 -1
  501. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.js +0 -92
  502. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts +0 -12
  503. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts.map +0 -1
  504. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.js +0 -160
  505. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts +0 -3
  506. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts.map +0 -1
  507. package/apps/app-lifeops/src/components/LifeOpsMoneySection.js +0 -373
  508. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts +0 -9
  509. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts.map +0 -1
  510. package/apps/app-lifeops/src/components/LifeOpsNavRail.js +0 -93
  511. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts +0 -4
  512. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts.map +0 -1
  513. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.js +0 -274
  514. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts +0 -7
  515. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts.map +0 -1
  516. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.js +0 -670
  517. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts +0 -42
  518. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts.map +0 -1
  519. package/apps/app-lifeops/src/components/LifeOpsPageSections.js +0 -166
  520. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts +0 -2
  521. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts.map +0 -1
  522. package/apps/app-lifeops/src/components/LifeOpsPageView.js +0 -565
  523. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts +0 -2
  524. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts.map +0 -1
  525. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.js +0 -749
  526. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts +0 -27
  527. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts.map +0 -1
  528. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.js +0 -106
  529. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts +0 -2
  530. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts.map +0 -1
  531. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.js +0 -373
  532. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts +0 -10
  533. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts.map +0 -1
  534. package/apps/app-lifeops/src/components/LifeOpsSectionContent.js +0 -30
  535. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts +0 -21
  536. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts.map +0 -1
  537. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.js +0 -30
  538. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts +0 -20
  539. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts.map +0 -1
  540. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.js +0 -597
  541. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts +0 -13
  542. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts.map +0 -1
  543. package/apps/app-lifeops/src/components/LifeOpsSetupGate.js +0 -134
  544. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts +0 -10
  545. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts.map +0 -1
  546. package/apps/app-lifeops/src/components/LifeOpsSleepSection.js +0 -425
  547. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts +0 -11
  548. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts.map +0 -1
  549. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.js +0 -49
  550. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts +0 -2
  551. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts.map +0 -1
  552. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.js +0 -1041
  553. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts +0 -7
  554. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts.map +0 -1
  555. package/apps/app-lifeops/src/components/MessagingConnectorCards.js +0 -643
  556. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts +0 -9
  557. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts.map +0 -1
  558. package/apps/app-lifeops/src/components/MissingSourceCard.js +0 -5
  559. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts +0 -2
  560. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts.map +0 -1
  561. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.js +0 -162
  562. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts +0 -8
  563. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts.map +0 -1
  564. package/apps/app-lifeops/src/components/SleepInspectionPanel.js +0 -59
  565. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts +0 -3
  566. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts.map +0 -1
  567. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.js +0 -75
  568. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts +0 -8
  569. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts.map +0 -1
  570. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.js +0 -48
  571. package/apps/app-lifeops/src/components/lifeops-labels.d.ts +0 -2
  572. package/apps/app-lifeops/src/components/lifeops-labels.d.ts.map +0 -1
  573. package/apps/app-lifeops/src/components/lifeops-labels.js +0 -5
  574. package/apps/app-lifeops/src/events/index.d.ts +0 -34
  575. package/apps/app-lifeops/src/events/index.d.ts.map +0 -1
  576. package/apps/app-lifeops/src/events/index.js +0 -23
  577. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts +0 -3
  578. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts.map +0 -1
  579. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +0 -48
  580. package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts +0 -3
  581. package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts.map +0 -1
  582. package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +0 -173
  583. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts +0 -3
  584. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts.map +0 -1
  585. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +0 -172
  586. package/apps/app-lifeops/src/followup/followup-tracker.d.ts +0 -82
  587. package/apps/app-lifeops/src/followup/followup-tracker.d.ts.map +0 -1
  588. package/apps/app-lifeops/src/followup/followup-tracker.js +0 -279
  589. package/apps/app-lifeops/src/followup/index.d.ts +0 -5
  590. package/apps/app-lifeops/src/followup/index.d.ts.map +0 -1
  591. package/apps/app-lifeops/src/followup/index.js +0 -4
  592. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts +0 -28
  593. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts.map +0 -1
  594. package/apps/app-lifeops/src/hooks/useCalendarWeek.js +0 -93
  595. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts +0 -14
  596. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts.map +0 -1
  597. package/apps/app-lifeops/src/hooks/useDiscordConnector.js +0 -126
  598. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts +0 -29
  599. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts.map +0 -1
  600. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.js +0 -481
  601. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts +0 -10
  602. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts.map +0 -1
  603. package/apps/app-lifeops/src/hooks/useIMessageConnector.js +0 -50
  604. package/apps/app-lifeops/src/hooks/useInbox.d.ts +0 -34
  605. package/apps/app-lifeops/src/hooks/useInbox.d.ts.map +0 -1
  606. package/apps/app-lifeops/src/hooks/useInbox.js +0 -98
  607. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts +0 -2
  608. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts.map +0 -1
  609. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.js +0 -382
  610. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts +0 -21
  611. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts.map +0 -1
  612. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.js +0 -83
  613. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts +0 -8
  614. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +0 -1
  615. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.js +0 -60
  616. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts +0 -18
  617. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts.map +0 -1
  618. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.js +0 -66
  619. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts +0 -14
  620. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts.map +0 -1
  621. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.js +0 -79
  622. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts +0 -18
  623. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts.map +0 -1
  624. package/apps/app-lifeops/src/hooks/useLifeOpsSection.js +0 -78
  625. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts +0 -14
  626. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts.map +0 -1
  627. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.js +0 -160
  628. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts +0 -16
  629. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts.map +0 -1
  630. package/apps/app-lifeops/src/hooks/useSignalConnector.js +0 -198
  631. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts +0 -21
  632. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts.map +0 -1
  633. package/apps/app-lifeops/src/hooks/useTelegramConnector.js +0 -177
  634. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts +0 -8
  635. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts.map +0 -1
  636. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.js +0 -58
  637. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts +0 -12
  638. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts.map +0 -1
  639. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.js +0 -152
  640. package/apps/app-lifeops/src/inbox/config.d.ts +0 -7
  641. package/apps/app-lifeops/src/inbox/config.d.ts.map +0 -1
  642. package/apps/app-lifeops/src/inbox/config.js +0 -67
  643. package/apps/app-lifeops/src/inbox/reflection.d.ts +0 -40
  644. package/apps/app-lifeops/src/inbox/reflection.d.ts.map +0 -1
  645. package/apps/app-lifeops/src/inbox/reflection.js +0 -115
  646. package/apps/app-lifeops/src/inbox/repository.d.ts +0 -52
  647. package/apps/app-lifeops/src/inbox/repository.d.ts.map +0 -1
  648. package/apps/app-lifeops/src/inbox/repository.js +0 -262
  649. package/apps/app-lifeops/src/inbox/triage-classifier.d.ts +0 -15
  650. package/apps/app-lifeops/src/inbox/triage-classifier.d.ts.map +0 -1
  651. package/apps/app-lifeops/src/inbox/triage-classifier.js +0 -179
  652. package/apps/app-lifeops/src/index.d.ts +0 -20
  653. package/apps/app-lifeops/src/index.d.ts.map +0 -1
  654. package/apps/app-lifeops/src/index.js +0 -18
  655. package/apps/app-lifeops/src/lifeops/approval-queue.d.ts +0 -24
  656. package/apps/app-lifeops/src/lifeops/approval-queue.d.ts.map +0 -1
  657. package/apps/app-lifeops/src/lifeops/approval-queue.js +0 -500
  658. package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts +0 -166
  659. package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts.map +0 -1
  660. package/apps/app-lifeops/src/lifeops/approval-queue.types.js +0 -22
  661. package/apps/app-lifeops/src/lifeops/autofill-whitelist.d.ts +0 -15
  662. package/apps/app-lifeops/src/lifeops/autofill-whitelist.d.ts.map +0 -1
  663. package/apps/app-lifeops/src/lifeops/autofill-whitelist.js +0 -116
  664. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts +0 -60
  665. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts.map +0 -1
  666. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.js +0 -134
  667. package/apps/app-lifeops/src/lifeops/background-planner.d.ts +0 -141
  668. package/apps/app-lifeops/src/lifeops/background-planner.d.ts.map +0 -1
  669. package/apps/app-lifeops/src/lifeops/background-planner.js +0 -377
  670. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts +0 -61
  671. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +0 -1
  672. package/apps/app-lifeops/src/lifeops/calendly-client.js +0 -234
  673. package/apps/app-lifeops/src/lifeops/checkin/schedule-resolver.d.ts +0 -14
  674. package/apps/app-lifeops/src/lifeops/checkin/schedule-resolver.d.ts.map +0 -1
  675. package/apps/app-lifeops/src/lifeops/checkin/schedule-resolver.js +0 -27
  676. package/apps/app-lifeops/src/lifeops/cross-channel-search.d.ts +0 -88
  677. package/apps/app-lifeops/src/lifeops/cross-channel-search.d.ts.map +0 -1
  678. package/apps/app-lifeops/src/lifeops/cross-channel-search.js +0 -446
  679. package/apps/app-lifeops/src/lifeops/intent-sync.d.ts +0 -59
  680. package/apps/app-lifeops/src/lifeops/intent-sync.d.ts.map +0 -1
  681. package/apps/app-lifeops/src/lifeops/intent-sync.js +0 -305
  682. package/apps/app-lifeops/src/lifeops/notifications-push.d.ts +0 -37
  683. package/apps/app-lifeops/src/lifeops/notifications-push.d.ts.map +0 -1
  684. package/apps/app-lifeops/src/lifeops/notifications-push.js +0 -92
  685. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +0 -50
  686. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +0 -1
  687. package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +0 -448
  688. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts +0 -38
  689. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +0 -1
  690. package/apps/app-lifeops/src/lifeops/remote-desktop.js +0 -372
  691. package/apps/app-lifeops/src/lifeops/runtime.d.ts +0 -11
  692. package/apps/app-lifeops/src/lifeops/runtime.d.ts.map +0 -1
  693. package/apps/app-lifeops/src/lifeops/runtime.js +0 -57
  694. package/apps/app-lifeops/src/lifeops/screen-context.d.ts +0 -52
  695. package/apps/app-lifeops/src/lifeops/screen-context.d.ts.map +0 -1
  696. package/apps/app-lifeops/src/lifeops/screen-context.js +0 -349
  697. package/apps/app-lifeops/src/lifeops-route.d.ts +0 -74
  698. package/apps/app-lifeops/src/lifeops-route.d.ts.map +0 -1
  699. package/apps/app-lifeops/src/lifeops-route.js +0 -204
  700. package/apps/app-lifeops/src/platform/index.d.ts +0 -2
  701. package/apps/app-lifeops/src/platform/index.d.ts.map +0 -1
  702. package/apps/app-lifeops/src/platform/index.js +0 -1
  703. package/apps/app-lifeops/src/platform/lifeops-github.d.ts +0 -15
  704. package/apps/app-lifeops/src/platform/lifeops-github.d.ts.map +0 -1
  705. package/apps/app-lifeops/src/platform/lifeops-github.js +0 -135
  706. package/apps/app-lifeops/src/plugin.d.ts +0 -33
  707. package/apps/app-lifeops/src/plugin.d.ts.map +0 -1
  708. package/apps/app-lifeops/src/plugin.js +0 -316
  709. package/apps/app-lifeops/src/provider.d.ts +0 -4
  710. package/apps/app-lifeops/src/provider.d.ts.map +0 -1
  711. package/apps/app-lifeops/src/provider.js +0 -77
  712. package/apps/app-lifeops/src/providers/activity-profile.d.ts +0 -3
  713. package/apps/app-lifeops/src/providers/activity-profile.d.ts.map +0 -1
  714. package/apps/app-lifeops/src/providers/activity-profile.js +0 -140
  715. package/apps/app-lifeops/src/providers/app-blocker.d.ts +0 -3
  716. package/apps/app-lifeops/src/providers/app-blocker.d.ts.map +0 -1
  717. package/apps/app-lifeops/src/providers/app-blocker.js +0 -86
  718. package/apps/app-lifeops/src/providers/cross-channel-context.d.ts +0 -29
  719. package/apps/app-lifeops/src/providers/cross-channel-context.d.ts.map +0 -1
  720. package/apps/app-lifeops/src/providers/cross-channel-context.js +0 -182
  721. package/apps/app-lifeops/src/providers/inbox-triage.d.ts +0 -3
  722. package/apps/app-lifeops/src/providers/inbox-triage.d.ts.map +0 -1
  723. package/apps/app-lifeops/src/providers/inbox-triage.js +0 -90
  724. package/apps/app-lifeops/src/providers/lifeops.d.ts +0 -3
  725. package/apps/app-lifeops/src/providers/lifeops.d.ts.map +0 -1
  726. package/apps/app-lifeops/src/providers/lifeops.js +0 -197
  727. package/apps/app-lifeops/src/remote/pairing-code.d.ts +0 -39
  728. package/apps/app-lifeops/src/remote/pairing-code.d.ts.map +0 -1
  729. package/apps/app-lifeops/src/remote/pairing-code.js +0 -76
  730. package/apps/app-lifeops/src/remote/remote-session-service.d.ts +0 -107
  731. package/apps/app-lifeops/src/remote/remote-session-service.d.ts.map +0 -1
  732. package/apps/app-lifeops/src/remote/remote-session-service.js +0 -253
  733. package/apps/app-lifeops/src/service.d.ts +0 -32
  734. package/apps/app-lifeops/src/service.d.ts.map +0 -1
  735. package/apps/app-lifeops/src/service.js +0 -67
  736. package/apps/app-lifeops/src/travel-time/calendar-create.d.ts +0 -17
  737. package/apps/app-lifeops/src/travel-time/calendar-create.d.ts.map +0 -1
  738. package/apps/app-lifeops/src/travel-time/calendar-create.js +0 -21
  739. package/apps/app-lifeops/src/travel-time/service.d.ts +0 -60
  740. package/apps/app-lifeops/src/travel-time/service.d.ts.map +0 -1
  741. package/apps/app-lifeops/src/travel-time/service.js +0 -142
  742. package/apps/app-lifeops/src/utils/lifeops-url.d.ts +0 -5
  743. package/apps/app-lifeops/src/utils/lifeops-url.d.ts.map +0 -1
  744. package/apps/app-lifeops/src/utils/lifeops-url.js +0 -35
  745. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts +0 -3
  746. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +0 -1
  747. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +0 -246
  748. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.d.ts +0 -3
  749. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.d.ts.map +0 -1
  750. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.js +0 -83
  751. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/releaseBlock.d.ts +0 -3
  752. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/releaseBlock.d.ts.map +0 -1
  753. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/releaseBlock.js +0 -98
  754. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-reconciler.d.ts +0 -7
  755. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-reconciler.d.ts.map +0 -1
  756. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-reconciler.js +0 -111
  757. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-schema.d.ts +0 -39
  758. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-schema.d.ts.map +0 -1
  759. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-schema.js +0 -123
  760. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.d.ts +0 -21
  761. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.d.ts.map +0 -1
  762. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.js +0 -258
  763. package/apps/app-lifeops/src/website-blocker/chat-integration/index.d.ts +0 -8
  764. package/apps/app-lifeops/src/website-blocker/chat-integration/index.d.ts.map +0 -1
  765. package/apps/app-lifeops/src/website-blocker/chat-integration/index.js +0 -6
  766. package/packages/app-core/src/api/client-lifeops.d.ts +0 -35
  767. package/packages/app-core/src/api/client-lifeops.d.ts.map +0 -1
  768. package/packages/app-core/src/api/client-lifeops.js +0 -114
  769. package/packages/app-core/src/hooks/useGoogleLifeOpsConnector.d.ts +0 -20
  770. package/packages/app-core/src/hooks/useGoogleLifeOpsConnector.d.ts.map +0 -1
  771. package/packages/app-core/src/hooks/useGoogleLifeOpsConnector.js +0 -69
  772. package/packages/app-core/src/hooks/useLifeOpsAppState.d.ts +0 -21
  773. package/packages/app-core/src/hooks/useLifeOpsAppState.d.ts.map +0 -1
  774. package/packages/app-core/src/hooks/useLifeOpsAppState.js +0 -81
  775. package/packages/app-core/src/services/steward-sidecar.d.ts +0 -6
  776. package/packages/app-core/src/services/steward-sidecar.d.ts.map +0 -1
  777. package/packages/app-core/src/services/steward-sidecar.js +0 -5
@@ -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
- }