@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,964 +0,0 @@
1
- /**
2
- * Cross-channel draft/send action.
3
- *
4
- * Always drafts first. Callers must re-invoke with `confirmed: true` to
5
- * actually dispatch. Dispatch is routed per channel:
6
- * - email → LifeOpsService.sendGmailMessage
7
- * - sms → sendTwilioSms
8
- * - twilio_voice → sendTwilioVoiceCall
9
- * - telegram → LifeOpsService.sendTelegramMessage
10
- * - discord → runtime send handler registered for "discord"
11
- * - signal → runtime send handler registered for "signal"
12
- * - imessage → LifeOpsService.sendIMessage
13
- * - whatsapp → LifeOpsService.sendWhatsAppMessage
14
- * - notifications → ntfy push (NTFY_BASE_URL)
15
- * - calendly → createCalendlySingleUseLink (target = event-type URI)
16
- */
17
- import { ModelType, parseJSONObjectFromText, parseKeyValueXml, } from "@elizaos/core";
18
- import { createCalendlySingleUseLink, readCalendlyCredentialsFromEnv, } from "../lifeops/calendly-client.js";
19
- import { requireFeatureEnabled } from "../lifeops/feature-flags.js";
20
- import { FeatureNotEnabledError, } from "../lifeops/feature-flags.types.js";
21
- import { NtfyConfigError, readNtfyConfigFromEnv, sendPush, } from "../lifeops/notifications-push.js";
22
- import { LifeOpsService } from "../lifeops/service.js";
23
- import { readTwilioCredentialsFromEnv, sendTwilioSms, sendTwilioVoiceCall, } from "../lifeops/twilio.js";
24
- import { recentConversationTexts } from "./life-recent-context.js";
25
- import { hasLifeOpsAccess } from "./lifeops-google-helpers.js";
26
- const ACTION_NAME = "OWNER_SEND_MESSAGE";
27
- export const CROSS_CHANNEL_SEND_CHANNELS = [
28
- "email",
29
- "telegram",
30
- "discord",
31
- "signal",
32
- "sms",
33
- "twilio_voice",
34
- "imessage",
35
- "whatsapp",
36
- "notifications",
37
- "calendly",
38
- "x_dm",
39
- ];
40
- function coerceString(value) {
41
- if (typeof value !== "string")
42
- return undefined;
43
- const trimmed = value.trim();
44
- return trimmed.length > 0 ? trimmed : undefined;
45
- }
46
- function coerceOptionalBool(value) {
47
- if (typeof value === "boolean") {
48
- return value;
49
- }
50
- if (typeof value === "string") {
51
- const normalized = value.trim().toLowerCase();
52
- if (normalized === "true")
53
- return true;
54
- if (normalized === "false")
55
- return false;
56
- }
57
- return undefined;
58
- }
59
- function isCrossChannelSendChannel(value) {
60
- return CROSS_CHANNEL_SEND_CHANNELS.includes(value);
61
- }
62
- function normalizeChannelAlias(value) {
63
- if (!value) {
64
- return undefined;
65
- }
66
- const normalized = value
67
- .trim()
68
- .toLowerCase()
69
- .replace(/[-\s]+/g, "_");
70
- const aliasMap = {
71
- sms: "sms",
72
- twilio_sms: "sms",
73
- twiliosms: "sms",
74
- twilio_voice: "twilio_voice",
75
- twiliovoice: "twilio_voice",
76
- email: "email",
77
- gmail: "email",
78
- telegram: "telegram",
79
- discord: "discord",
80
- signal: "signal",
81
- imessage: "imessage",
82
- whatsapp: "whatsapp",
83
- notifications: "notifications",
84
- notification: "notifications",
85
- push: "notifications",
86
- ntfy: "notifications",
87
- calendly: "calendly",
88
- x_dm: "x_dm",
89
- xdm: "x_dm",
90
- twitter_dm: "x_dm",
91
- twitterdm: "x_dm",
92
- };
93
- const canonical = aliasMap[normalized];
94
- if (canonical) {
95
- return canonical;
96
- }
97
- return isCrossChannelSendChannel(normalized) ? normalized : undefined;
98
- }
99
- function normalizePlannerResponse(value) {
100
- if (typeof value !== "string") {
101
- return undefined;
102
- }
103
- const trimmed = value.trim();
104
- return trimmed.length > 0 ? trimmed : undefined;
105
- }
106
- function normalizePlannerBoolean(value) {
107
- if (typeof value === "boolean") {
108
- return value;
109
- }
110
- if (typeof value === "string") {
111
- const normalized = value.trim().toLowerCase();
112
- if (normalized === "true")
113
- return true;
114
- if (normalized === "false")
115
- return false;
116
- }
117
- return null;
118
- }
119
- function getPendingDraftCacheKey(roomId) {
120
- return `lifeops:cross-channel-send:pending:${roomId}`;
121
- }
122
- async function readPendingDraft(runtime, roomId) {
123
- if (typeof runtime.getCache !== "function") {
124
- return null;
125
- }
126
- return ((await runtime.getCache(getPendingDraftCacheKey(roomId))) ?? null);
127
- }
128
- async function writePendingDraft(runtime, roomId, draft) {
129
- if (typeof runtime.setCache !== "function") {
130
- return;
131
- }
132
- await runtime.setCache(getPendingDraftCacheKey(roomId), draft);
133
- }
134
- async function clearPendingDraft(runtime, roomId) {
135
- if (typeof runtime.deleteCache !== "function") {
136
- return;
137
- }
138
- await runtime.deleteCache(getPendingDraftCacheKey(roomId));
139
- }
140
- async function resolveCrossChannelSendPlanWithLlm(args) {
141
- const currentMessage = typeof args.message.content?.text === "string"
142
- ? args.message.content.text.trim()
143
- : "";
144
- const recentConversation = (await recentConversationTexts({
145
- runtime: args.runtime,
146
- message: args.message,
147
- state: args.state,
148
- limit: 8,
149
- })).join("\n");
150
- const prompt = [
151
- "Plan the CROSS_CHANNEL_SEND action for this request.",
152
- "Use the current request, recent conversation, and any pending draft.",
153
- "Return a JSON object with exactly these fields:",
154
- " channel: one of email, telegram, discord, signal, sms, twilio_voice, imessage, whatsapp, notifications, calendly, x_dm, or null",
155
- " target: recipient identifier string or null",
156
- " message: message body string or null",
157
- " subject: email subject string or null",
158
- " confirmed: boolean or null",
159
- " shouldAct: boolean",
160
- " response: short natural-language reply when shouldAct is false or more context is needed",
161
- "",
162
- "Rules:",
163
- "- If the user is confirming a previously drafted send, keep the pending draft channel/target/message and set confirmed=true.",
164
- "- If the user is only stating a policy, preference, or future trigger, set shouldAct=false and explain the policy instead of fabricating a send.",
165
- "- Group-chat handoff suggestions are not sends. Set shouldAct=false and explain that you'll suggest a group-chat handoff when relay coordination gets messy.",
166
- "- For email, include a subject when the request implies one or a pending draft already has one.",
167
- "- Return only JSON.",
168
- "",
169
- "Examples:",
170
- ' current request: "send it" with pending draft {"channel":"sms","target":"+15555550101","message":"Running 10 minutes late."}',
171
- ' -> {"channel":"sms","target":"+15555550101","message":"Running 10 minutes late.","subject":null,"confirmed":true,"shouldAct":true,"response":null}',
172
- ' current request: "Email alice@example.com the notes from today" with no pending draft',
173
- ' -> {"channel":"email","target":"alice@example.com","message":"Here are the notes from today.","subject":"Notes from today","confirmed":false,"shouldAct":true,"response":null}',
174
- ' current request: "If direct relaying gets messy here, suggest making a group chat handoff instead."',
175
- ' -> {"channel":null,"target":null,"message":null,"subject":null,"confirmed":null,"shouldAct":false,"response":"If relay coordination gets messy, I will suggest moving everyone into a group chat handoff instead of continuing one-off relays."}',
176
- "",
177
- `Current request: ${JSON.stringify(currentMessage)}`,
178
- `Pending draft: ${JSON.stringify(args.pendingDraft)}`,
179
- `Recent conversation: ${JSON.stringify(recentConversation)}`,
180
- ].join("\n");
181
- try {
182
- // biome-ignore lint/correctness/useHookAtTopLevel: runtime.useModel is an elizaOS model API, not a React hook.
183
- const result = await args.runtime.useModel(ModelType.TEXT_SMALL, {
184
- prompt,
185
- });
186
- const rawResponse = typeof result === "string" ? result : "";
187
- const parsed = parseKeyValueXml(rawResponse) ??
188
- parseJSONObjectFromText(rawResponse);
189
- if (!parsed) {
190
- const fallbackResponse = rawResponse.trim();
191
- return fallbackResponse.length > 0
192
- ? {
193
- shouldAct: false,
194
- response: fallbackResponse,
195
- }
196
- : {};
197
- }
198
- return {
199
- channel: normalizePlannerResponse(parsed.channel),
200
- target: normalizePlannerResponse(parsed.target),
201
- message: normalizePlannerResponse(parsed.message),
202
- subject: normalizePlannerResponse(parsed.subject),
203
- confirmed: normalizePlannerBoolean(parsed.confirmed),
204
- shouldAct: normalizePlannerBoolean(parsed.shouldAct),
205
- response: normalizePlannerResponse(parsed.response),
206
- };
207
- }
208
- catch (error) {
209
- args.runtime.logger?.warn?.({
210
- src: "action:cross-channel-send",
211
- error: error instanceof Error ? error.message : String(error),
212
- }, "Cross-channel send planning model call failed");
213
- return {};
214
- }
215
- }
216
- async function enqueueApprovalRequest(args) {
217
- if (typeof args.runtime.createTask !== "function") {
218
- return null;
219
- }
220
- return await args.runtime.createTask({
221
- name: `CROSS_CHANNEL_SEND_${Date.now()}`,
222
- description: `Approve sending ${args.channel} to ${args.target}${args.subject ? ` (${args.subject})` : ""}: ${args.body}`,
223
- roomId: args.message.roomId,
224
- entityId: args.message.entityId,
225
- tags: ["AWAITING_CHOICE", "APPROVAL", "CROSS_CHANNEL_SEND"],
226
- metadata: {
227
- options: [
228
- { name: "confirm", description: "Send the drafted message" },
229
- { name: "cancel", description: "Do not send it" },
230
- ],
231
- approvalRequest: {
232
- timeoutMs: 24 * 60 * 60 * 1000,
233
- timeoutDefault: "cancel",
234
- createdAt: Date.now(),
235
- isAsync: true,
236
- },
237
- actionName: ACTION_NAME,
238
- channel: args.channel,
239
- payload: {
240
- channel: args.channel,
241
- target: args.target,
242
- message: args.body,
243
- subject: args.subject ?? null,
244
- },
245
- },
246
- });
247
- }
248
- function twilioResultToActionResult(args) {
249
- const { channel, target, message, result } = args;
250
- if (!result.ok) {
251
- return {
252
- text: `${channel} dispatch to ${target} failed: ${result.error ?? "unknown error"}.`,
253
- success: false,
254
- values: {
255
- success: false,
256
- channel,
257
- target,
258
- error: result.error ?? "DISPATCH_FAILED",
259
- status: result.status,
260
- },
261
- data: {
262
- actionName: ACTION_NAME,
263
- channel,
264
- target,
265
- message,
266
- status: result.status,
267
- retryCount: result.retryCount,
268
- },
269
- };
270
- }
271
- return {
272
- text: `Sent ${channel} to ${target}.`,
273
- success: true,
274
- values: {
275
- success: true,
276
- channel,
277
- target,
278
- sid: result.sid ?? null,
279
- },
280
- data: {
281
- actionName: ACTION_NAME,
282
- channel,
283
- target,
284
- message,
285
- sid: result.sid ?? null,
286
- status: result.status,
287
- retryCount: result.retryCount,
288
- },
289
- };
290
- }
291
- async function dispatchViaRuntimeSendHandler(runtime, channel, target, message) {
292
- await runtime.sendMessageToTarget({
293
- source: channel,
294
- channelId: target,
295
- }, {
296
- text: message,
297
- source: channel,
298
- });
299
- }
300
- function buildDispatchFailure(args) {
301
- const { channel, target, body, error, subject } = args;
302
- return {
303
- text: `${channel} dispatch to ${target} failed: ${error}.`,
304
- success: false,
305
- values: { success: false, channel, target, error },
306
- data: {
307
- actionName: ACTION_NAME,
308
- channel,
309
- target,
310
- message: body,
311
- subject: subject ?? null,
312
- },
313
- };
314
- }
315
- function buildDispatchSuccess(args) {
316
- const { channel, target, body, subject, result } = args;
317
- return {
318
- text: `Sent ${channel} to ${target}.`,
319
- success: true,
320
- values: { success: true, channel, target },
321
- data: {
322
- actionName: ACTION_NAME,
323
- channel,
324
- target,
325
- message: body,
326
- subject: subject ?? null,
327
- result: result,
328
- },
329
- };
330
- }
331
- function createLifeOpsMethodDispatcher(args) {
332
- return async (ctx) => {
333
- const serviceUnknown = ctx.service;
334
- const method = serviceUnknown[args.method];
335
- if (typeof method !== "function") {
336
- return buildDispatchFailure({
337
- channel: ctx.channel,
338
- target: ctx.target,
339
- body: ctx.body,
340
- subject: ctx.subject,
341
- error: `${ctx.channel} send is unavailable because the required LifeOps connector method is not loaded`,
342
- });
343
- }
344
- try {
345
- const result = await method.call(ctx.service, args.buildRequest(ctx));
346
- return buildDispatchSuccess({
347
- channel: ctx.channel,
348
- target: ctx.target,
349
- body: ctx.body,
350
- subject: ctx.subject,
351
- result,
352
- });
353
- }
354
- catch (error) {
355
- return buildDispatchFailure({
356
- channel: ctx.channel,
357
- target: ctx.target,
358
- body: ctx.body,
359
- subject: ctx.subject,
360
- error: error instanceof Error ? error.message : String(error),
361
- });
362
- }
363
- };
364
- }
365
- const CHANNEL_DISPATCHERS = {
366
- sms: async ({ channel, target, body }) => {
367
- const credentials = readTwilioCredentialsFromEnv();
368
- if (!credentials) {
369
- return {
370
- text: "Twilio is not configured. Set TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, and TWILIO_PHONE_NUMBER.",
371
- success: false,
372
- values: { success: false, error: "TWILIO_NOT_CONFIGURED", channel },
373
- data: { actionName: ACTION_NAME, channel },
374
- };
375
- }
376
- const result = await sendTwilioSms({ credentials, to: target, body });
377
- return twilioResultToActionResult({
378
- channel,
379
- target,
380
- message: body,
381
- result,
382
- });
383
- },
384
- twilio_voice: async ({ channel, target, body }) => {
385
- const credentials = readTwilioCredentialsFromEnv();
386
- if (!credentials) {
387
- return {
388
- text: "Twilio is not configured. Set TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, and TWILIO_PHONE_NUMBER.",
389
- success: false,
390
- values: { success: false, error: "TWILIO_NOT_CONFIGURED", channel },
391
- data: { actionName: ACTION_NAME, channel },
392
- };
393
- }
394
- const result = await sendTwilioVoiceCall({
395
- credentials,
396
- to: target,
397
- message: body,
398
- });
399
- return twilioResultToActionResult({
400
- channel,
401
- target,
402
- message: body,
403
- result,
404
- });
405
- },
406
- email: async ({ service, channel, target, body, subject }) => {
407
- if (!subject) {
408
- return {
409
- text: "Email send requires a subject.",
410
- success: false,
411
- values: { success: false, error: "MISSING_SUBJECT", channel },
412
- data: { actionName: ACTION_NAME, channel },
413
- };
414
- }
415
- const requestUrl = new URL("http://internal.invalid/lifeops/gmail/send");
416
- try {
417
- await service.sendGmailMessage(requestUrl, {
418
- to: [target],
419
- subject,
420
- bodyText: body,
421
- confirmSend: true,
422
- });
423
- return buildDispatchSuccess({ channel, target, body, subject });
424
- }
425
- catch (error) {
426
- return buildDispatchFailure({
427
- channel,
428
- target,
429
- body,
430
- subject,
431
- error: error instanceof Error ? error.message : String(error),
432
- });
433
- }
434
- },
435
- telegram: createLifeOpsMethodDispatcher({
436
- method: "sendTelegramMessage",
437
- buildRequest: ({ target, body }) => ({ target, message: body }),
438
- }),
439
- imessage: createLifeOpsMethodDispatcher({
440
- method: "sendIMessage",
441
- buildRequest: ({ target, body }) => ({ to: target, text: body }),
442
- }),
443
- whatsapp: createLifeOpsMethodDispatcher({
444
- method: "sendWhatsAppMessage",
445
- buildRequest: ({ target, body }) => ({ to: target, text: body }),
446
- }),
447
- discord: async ({ runtime, channel, target, body }) => {
448
- try {
449
- await dispatchViaRuntimeSendHandler(runtime, "discord", target, body);
450
- return buildDispatchSuccess({ channel, target, body });
451
- }
452
- catch (error) {
453
- return buildDispatchFailure({
454
- channel,
455
- target,
456
- body,
457
- error: error instanceof Error ? error.message : String(error),
458
- });
459
- }
460
- },
461
- signal: async ({ runtime, channel, target, body }) => {
462
- try {
463
- await dispatchViaRuntimeSendHandler(runtime, "signal", target, body);
464
- return buildDispatchSuccess({ channel, target, body });
465
- }
466
- catch (error) {
467
- return buildDispatchFailure({
468
- channel,
469
- target,
470
- body,
471
- error: error instanceof Error ? error.message : String(error),
472
- });
473
- }
474
- },
475
- notifications: async ({ channel, target, body, subject }) => {
476
- try {
477
- const config = readNtfyConfigFromEnv();
478
- const result = await sendPush({
479
- topic: target || undefined,
480
- title: subject || "Notification",
481
- message: body,
482
- }, config);
483
- return buildDispatchSuccess({ channel, target, body, subject, result });
484
- }
485
- catch (error) {
486
- if (error instanceof NtfyConfigError) {
487
- return {
488
- text: `Push notifications are not configured. Set NTFY_BASE_URL (and optionally NTFY_DEFAULT_TOPIC).`,
489
- success: false,
490
- values: { success: false, error: "NTFY_NOT_CONFIGURED", channel },
491
- data: { actionName: ACTION_NAME, channel },
492
- };
493
- }
494
- return buildDispatchFailure({
495
- channel,
496
- target,
497
- body,
498
- subject,
499
- error: error instanceof Error ? error.message : String(error),
500
- });
501
- }
502
- },
503
- // target = Calendly event-type URI (e.g. the URI from the event type list).
504
- // body is ignored — this generates a single-use booking link.
505
- calendly: async ({ channel, target, body, subject }) => {
506
- const credentials = readCalendlyCredentialsFromEnv();
507
- if (!credentials) {
508
- return {
509
- text: "Calendly is not configured. Set CALENDLY_API_KEY.",
510
- success: false,
511
- values: { success: false, error: "CALENDLY_NOT_CONFIGURED", channel },
512
- data: { actionName: ACTION_NAME, channel },
513
- };
514
- }
515
- if (!target) {
516
- return {
517
- text: "Calendly send requires a target event-type URI.",
518
- success: false,
519
- values: { success: false, error: "MISSING_TARGET", channel },
520
- data: { actionName: ACTION_NAME, channel },
521
- };
522
- }
523
- try {
524
- const result = await createCalendlySingleUseLink(credentials, target);
525
- const expiryText = result.expiresAt
526
- ? ` (expires ${result.expiresAt})`
527
- : "";
528
- return {
529
- text: `Calendly single-use booking link created: ${result.bookingUrl}${expiryText}`,
530
- success: true,
531
- values: {
532
- success: true,
533
- channel,
534
- target,
535
- bookingUrl: result.bookingUrl,
536
- },
537
- data: {
538
- actionName: ACTION_NAME,
539
- channel,
540
- target,
541
- message: body,
542
- subject: subject ?? null,
543
- result,
544
- },
545
- };
546
- }
547
- catch (error) {
548
- return buildDispatchFailure({
549
- channel,
550
- target,
551
- body,
552
- subject,
553
- error: error instanceof Error ? error.message : String(error),
554
- });
555
- }
556
- },
557
- x_dm: async ({ service, channel, target, body }) => {
558
- try {
559
- const conversationPrefix = "conversation:";
560
- const participantIds = target
561
- .split(",")
562
- .map((part) => part.trim())
563
- .filter(Boolean);
564
- const result = target.startsWith(conversationPrefix)
565
- ? await service.sendXConversationMessage({
566
- conversationId: target.slice(conversationPrefix.length),
567
- text: body,
568
- confirmSend: true,
569
- side: "owner",
570
- })
571
- : participantIds.length > 1
572
- ? await service.createXDirectMessageGroup({
573
- participantIds,
574
- text: body,
575
- confirmSend: true,
576
- side: "owner",
577
- })
578
- : await service.sendXDirectMessage({
579
- participantId: target,
580
- text: body,
581
- confirmSend: true,
582
- side: "owner",
583
- });
584
- if (!result.ok) {
585
- return buildDispatchFailure({
586
- channel,
587
- target,
588
- body,
589
- error: result.error ?? "Failed to send X DM.",
590
- });
591
- }
592
- return {
593
- text: `Sent X DM to ${target}.`,
594
- success: true,
595
- values: {
596
- success: result.ok,
597
- channel,
598
- target,
599
- },
600
- data: {
601
- actionName: ACTION_NAME,
602
- channel,
603
- target,
604
- message: body,
605
- result,
606
- },
607
- };
608
- }
609
- catch (error) {
610
- return buildDispatchFailure({
611
- channel,
612
- target,
613
- body,
614
- error: error instanceof Error ? error.message : String(error),
615
- });
616
- }
617
- },
618
- };
619
- export async function dispatchCrossChannelSend(ctx) {
620
- return await CHANNEL_DISPATCHERS[ctx.channel](ctx);
621
- }
622
- export const crossChannelSendAction = {
623
- name: ACTION_NAME,
624
- similes: [
625
- "CROSS_CHANNEL_SEND",
626
- "SEND_MESSAGE_TO",
627
- "DRAFT_MESSAGE",
628
- "SEND_ACROSS_CHANNEL",
629
- "POST_TO_CHANNEL",
630
- "POST_TO_DISCORD",
631
- "POST_TO_SLACK",
632
- "SEND_TELEGRAM",
633
- "SEND_SIGNAL",
634
- "SEND_WHATSAPP",
635
- "SEND_IMESSAGE",
636
- "SEND_SMS",
637
- "OWNER_DM",
638
- "REPLY_X_DM",
639
- "X_DM_REPLY",
640
- "OWNER_POST",
641
- ],
642
- description: "OWNER-scoped message send: the OWNER asks the agent to send a message " +
643
- "on the OWNER's behalf, using the OWNER's connected accounts (email, " +
644
- "telegram, discord, signal, sms, twilio_voice, imessage, whatsapp, " +
645
- "x_dm, notifications). Always drafts first; caller must re-invoke with " +
646
- "confirmed: true to dispatch. " +
647
- "Use this for any 'post <msg> to <channel>', 'send <msg> on <platform>', " +
648
- "or 'dm <person> on <platform>' request from the owner — the channel " +
649
- "name in the sentence (discord, telegram, signal, etc.) is the strongest " +
650
- "signal. " +
651
- "Do NOT use this for the AGENT's own outbound messages to people or the " +
652
- "owner (those use AGENT_SEND_MESSAGE). " +
653
- "Do NOT use this for 'broadcast/push/send <X> to all my devices' or " +
654
- "'broadcast a reminder to my phone/desktop/watch' — device-targeted " +
655
- "reminders belong to PUBLISH_DEVICE_INTENT. " +
656
- "Do NOT use OWNER_CALENDAR for channel-send requests even if the message " +
657
- "mentions a meeting-like word (e.g. 'standup', 'sync'); OWNER_CALENDAR " +
658
- "is for negotiating calendar proposals, not relaying chat messages.",
659
- suppressPostActionContinuation: true,
660
- validate: async (runtime, message) => hasLifeOpsAccess(runtime, message),
661
- parameters: [
662
- {
663
- name: "channel",
664
- description: `Channel to send on. Use canonical values ${CROSS_CHANNEL_SEND_CHANNELS.join(", ")}. Alias inputs like twilio_sms, gmail, push, ntfy, and twitter_dm are also accepted and normalized. Strongly preferred — when omitted, the handler runs an LLM extraction over the conversation to recover it.`,
665
- required: false,
666
- schema: {
667
- type: "string",
668
- enum: [
669
- ...CROSS_CHANNEL_SEND_CHANNELS,
670
- "twilio_sms",
671
- "gmail",
672
- "push",
673
- "ntfy",
674
- "twitter_dm",
675
- "group_chat",
676
- ],
677
- },
678
- },
679
- {
680
- name: "target",
681
- description: "Recipient identifier. Email address for email, E.164 phone for sms/twilio_voice, handle/user ID for chat channels, numeric X user ID or comma-separated numeric X user IDs for x_dm, Ntfy topic name for notifications. Strongly preferred — when omitted, the handler runs an LLM extraction over the conversation to recover it.",
682
- required: false,
683
- schema: { type: "string" },
684
- examples: ["+15555550101", "owner@example.test", "team-ops"],
685
- },
686
- {
687
- name: "message",
688
- description: "Message body (plaintext). Strongly preferred — when omitted, the handler runs an LLM extraction over the conversation to recover it.",
689
- required: false,
690
- schema: { type: "string" },
691
- },
692
- {
693
- name: "subject",
694
- description: "Email subject (email channel only).",
695
- required: false,
696
- schema: { type: "string" },
697
- },
698
- {
699
- name: "confirmed",
700
- description: "Set to true to actually dispatch. Otherwise returns a draft preview.",
701
- required: false,
702
- schema: { type: "boolean" },
703
- },
704
- ],
705
- examples: [
706
- [
707
- {
708
- name: "{{name1}}",
709
- content: { text: "Email alice@example.com the meeting notes" },
710
- },
711
- {
712
- name: "{{agentName}}",
713
- content: {
714
- text: 'Draft email to alice@example.com:\n\nSubject: Meeting notes\n\n"Here are the notes from today."\n\nSay "send it" to dispatch.',
715
- action: ACTION_NAME,
716
- },
717
- },
718
- ],
719
- [
720
- {
721
- name: "{{name1}}",
722
- content: { text: "Text +15551234567 that I'll be 10 minutes late" },
723
- },
724
- {
725
- name: "{{agentName}}",
726
- content: {
727
- text: 'Draft sms to +15551234567:\n\n"I\'ll be 10 minutes late."\n\nSay "send it" to dispatch.',
728
- action: ACTION_NAME,
729
- },
730
- },
731
- ],
732
- [
733
- {
734
- name: "{{name1}}",
735
- content: { text: "Call +15551234567 and say the build is done" },
736
- },
737
- {
738
- name: "{{agentName}}",
739
- content: {
740
- text: 'Draft twilio_voice to +15551234567:\n\n"The build is done."\n\nSay "send it" to dispatch.',
741
- action: ACTION_NAME,
742
- },
743
- },
744
- ],
745
- [
746
- {
747
- name: "{{name1}}",
748
- content: { text: "Send Alice a Telegram: on my way" },
749
- },
750
- {
751
- name: "{{agentName}}",
752
- content: {
753
- text: 'Draft telegram to Alice:\n\n"On my way."\n\nSay "send it" to dispatch.',
754
- action: ACTION_NAME,
755
- },
756
- },
757
- ],
758
- [
759
- {
760
- name: "{{name1}}",
761
- content: { text: "Send Priya a Signal message: thanks for the review" },
762
- },
763
- {
764
- name: "{{agentName}}",
765
- content: {
766
- text: 'Draft signal to Priya:\n\n"Thanks for the review."\n\nSay "send it" to dispatch.',
767
- action: ACTION_NAME,
768
- },
769
- },
770
- ],
771
- [
772
- {
773
- name: "{{name1}}",
774
- content: { text: "DM bob on Discord: standup in 5" },
775
- },
776
- {
777
- name: "{{agentName}}",
778
- content: {
779
- text: 'Draft discord to bob:\n\n"Standup in 5."\n\nSay "send it" to dispatch.',
780
- action: ACTION_NAME,
781
- },
782
- },
783
- ],
784
- ],
785
- handler: async (runtime, message, state, options) => {
786
- if (!(await hasLifeOpsAccess(runtime, message))) {
787
- return {
788
- text: "Permission denied: only the owner may send messages.",
789
- success: false,
790
- values: { success: false, error: "PERMISSION_DENIED" },
791
- data: { actionName: ACTION_NAME },
792
- };
793
- }
794
- const params = (options?.parameters ??
795
- {});
796
- const pendingDraft = await readPendingDraft(runtime, message.roomId);
797
- const rawChannel = coerceString(params.channel);
798
- const planner = !rawChannel ||
799
- normalizeChannelAlias(rawChannel) === undefined ||
800
- !coerceString(params.target) ||
801
- !coerceString(params.message) ||
802
- coerceOptionalBool(params.confirmed) === undefined
803
- ? await resolveCrossChannelSendPlanWithLlm({
804
- runtime,
805
- message,
806
- state,
807
- pendingDraft,
808
- })
809
- : null;
810
- const normalizedChannel = normalizeChannelAlias(rawChannel) ??
811
- normalizeChannelAlias(planner?.channel) ??
812
- pendingDraft?.channel;
813
- const target = coerceString(params.target) ?? planner?.target ?? pendingDraft?.target;
814
- const body = coerceString(params.message) ?? planner?.message ?? pendingDraft?.message;
815
- const subject = coerceString(params.subject) ??
816
- planner?.subject ??
817
- pendingDraft?.subject ??
818
- undefined;
819
- const confirmed = coerceOptionalBool(params.confirmed) ?? planner?.confirmed ?? false;
820
- if (planner?.shouldAct === false && planner.response) {
821
- return {
822
- text: planner.response,
823
- success: true,
824
- values: {
825
- success: true,
826
- acted: false,
827
- },
828
- data: {
829
- actionName: ACTION_NAME,
830
- acted: false,
831
- },
832
- };
833
- }
834
- if (!normalizedChannel) {
835
- if (rawChannel) {
836
- return {
837
- text: `Unknown channel "${rawChannel}". Valid channels: ${CROSS_CHANNEL_SEND_CHANNELS.join(", ")}.`,
838
- success: false,
839
- values: {
840
- success: false,
841
- error: "UNKNOWN_CHANNEL",
842
- channel: rawChannel,
843
- },
844
- data: { actionName: ACTION_NAME },
845
- };
846
- }
847
- return {
848
- text: planner?.response ?? "Missing required parameter: channel.",
849
- success: false,
850
- values: { success: false, error: "MISSING_CHANNEL" },
851
- data: { actionName: ACTION_NAME },
852
- };
853
- }
854
- const channel = normalizedChannel;
855
- if (!target) {
856
- return {
857
- text: planner?.response ?? "Missing required parameter: target.",
858
- success: false,
859
- values: { success: false, error: "MISSING_TARGET", channel },
860
- data: { actionName: ACTION_NAME, channel },
861
- };
862
- }
863
- if (!body) {
864
- return {
865
- text: planner?.response ?? "Missing required parameter: message.",
866
- success: false,
867
- values: { success: false, error: "MISSING_MESSAGE", channel },
868
- data: { actionName: ACTION_NAME, channel },
869
- };
870
- }
871
- if (!confirmed) {
872
- const approvalTaskId = await enqueueApprovalRequest({
873
- runtime,
874
- message,
875
- channel,
876
- target,
877
- body,
878
- subject: subject ?? pendingDraft?.subject ?? undefined,
879
- });
880
- await writePendingDraft(runtime, message.roomId, {
881
- channel,
882
- target,
883
- message: body,
884
- subject: subject ?? pendingDraft?.subject ?? null,
885
- approvalTaskId,
886
- createdAt: new Date().toISOString(),
887
- });
888
- const subjectLine = channel === "email" && (subject ?? pendingDraft?.subject)
889
- ? `\nSubject: ${subject ?? pendingDraft?.subject}\n`
890
- : "";
891
- return {
892
- text: `Draft ${channel} to ${target}:\n${subjectLine}\n"${body}"\n\nRe-issue with confirmed: true to dispatch.`,
893
- success: true,
894
- values: {
895
- success: true,
896
- draft: true,
897
- channel,
898
- target,
899
- message: body,
900
- subject: subject ?? pendingDraft?.subject ?? null,
901
- },
902
- data: {
903
- actionName: ACTION_NAME,
904
- draft: true,
905
- channel,
906
- target,
907
- message: body,
908
- subject: subject ?? pendingDraft?.subject ?? null,
909
- approvalTaskId,
910
- },
911
- };
912
- }
913
- const requiredFeatures = [];
914
- if (channel === "sms" || channel === "twilio_voice") {
915
- requiredFeatures.push("cross_channel.escalate");
916
- }
917
- if (channel === "notifications") {
918
- requiredFeatures.push("notifications.push");
919
- }
920
- for (const featureKey of requiredFeatures) {
921
- try {
922
- await requireFeatureEnabled(runtime, featureKey);
923
- }
924
- catch (error) {
925
- if (error instanceof FeatureNotEnabledError) {
926
- return {
927
- text: error.message,
928
- success: false,
929
- values: {
930
- success: false,
931
- error: error.code,
932
- featureKey: error.featureKey,
933
- channel,
934
- },
935
- data: {
936
- actionName: ACTION_NAME,
937
- error: error.code,
938
- featureKey: error.featureKey,
939
- channel,
940
- },
941
- };
942
- }
943
- throw error;
944
- }
945
- }
946
- const service = new LifeOpsService(runtime);
947
- const result = await CHANNEL_DISPATCHERS[channel]({
948
- runtime,
949
- service,
950
- channel,
951
- target,
952
- body,
953
- subject: subject ?? pendingDraft?.subject ?? undefined,
954
- });
955
- if (result.success) {
956
- await clearPendingDraft(runtime, message.roomId);
957
- const approvalTaskId = pendingDraft?.approvalTaskId;
958
- if (approvalTaskId) {
959
- await runtime.deleteTask(approvalTaskId);
960
- }
961
- }
962
- return result;
963
- },
964
- };