@elizaos/app-core 2.0.0-alpha.215 → 2.0.0-alpha.223

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 (525) hide show
  1. package/apps/app-companion/src/actions/emote.js +1 -1
  2. package/apps/app-elizamaker/src/twitter-verify.js +1 -1
  3. package/apps/app-lifeops/src/action.js +1 -1
  4. package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +1 -1
  5. package/apps/app-lifeops/src/actions/app-blocker.js +11 -5
  6. package/apps/app-lifeops/src/actions/approval.d.ts +21 -0
  7. package/apps/app-lifeops/src/actions/approval.d.ts.map +1 -0
  8. package/apps/app-lifeops/src/actions/approval.js +340 -0
  9. package/apps/app-lifeops/src/actions/autofill.d.ts.map +1 -1
  10. package/apps/app-lifeops/src/actions/autofill.js +29 -4
  11. package/apps/app-lifeops/src/actions/book-travel.d.ts +10 -0
  12. package/apps/app-lifeops/src/actions/book-travel.d.ts.map +1 -0
  13. package/apps/app-lifeops/src/actions/book-travel.js +539 -0
  14. package/apps/app-lifeops/src/actions/calendar.d.ts.map +1 -1
  15. package/apps/app-lifeops/src/actions/calendar.js +39 -16
  16. package/apps/app-lifeops/src/actions/calendly.d.ts.map +1 -1
  17. package/apps/app-lifeops/src/actions/calendly.js +24 -3
  18. package/apps/app-lifeops/src/actions/checkin.d.ts +6 -2
  19. package/apps/app-lifeops/src/actions/checkin.d.ts.map +1 -1
  20. package/apps/app-lifeops/src/actions/checkin.js +83 -6
  21. package/apps/app-lifeops/src/actions/computer-use.d.ts.map +1 -1
  22. package/apps/app-lifeops/src/actions/computer-use.js +12 -6
  23. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +13 -3
  24. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +1 -1
  25. package/apps/app-lifeops/src/actions/cross-channel-send.js +62 -57
  26. package/apps/app-lifeops/src/actions/device-bus.d.ts.map +1 -1
  27. package/apps/app-lifeops/src/actions/device-bus.js +38 -5
  28. package/apps/app-lifeops/src/actions/dossier.js +1 -1
  29. package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts +5 -0
  30. package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts.map +1 -0
  31. package/apps/app-lifeops/src/actions/email-unsubscribe.js +172 -0
  32. package/apps/app-lifeops/src/actions/feature-toggle.d.ts +3 -0
  33. package/apps/app-lifeops/src/actions/feature-toggle.d.ts.map +1 -0
  34. package/apps/app-lifeops/src/actions/feature-toggle.js +200 -0
  35. package/apps/app-lifeops/src/actions/gmail.d.ts.map +1 -1
  36. package/apps/app-lifeops/src/actions/gmail.js +289 -173
  37. package/apps/app-lifeops/src/actions/health.d.ts.map +1 -1
  38. package/apps/app-lifeops/src/actions/health.js +17 -2
  39. package/apps/app-lifeops/src/actions/inbox.d.ts.map +1 -1
  40. package/apps/app-lifeops/src/actions/inbox.js +168 -72
  41. package/apps/app-lifeops/src/actions/intent-sync.d.ts +3 -1
  42. package/apps/app-lifeops/src/actions/intent-sync.d.ts.map +1 -1
  43. package/apps/app-lifeops/src/actions/intent-sync.js +38 -24
  44. package/apps/app-lifeops/src/actions/life-goal-extractor.d.ts.map +1 -1
  45. package/apps/app-lifeops/src/actions/life-goal-extractor.js +69 -3
  46. package/apps/app-lifeops/src/actions/life-param-extractor.d.ts.map +1 -1
  47. package/apps/app-lifeops/src/actions/life-param-extractor.js +2 -0
  48. package/apps/app-lifeops/src/actions/life-recent-context.d.ts.map +1 -1
  49. package/apps/app-lifeops/src/actions/life-recent-context.js +14 -20
  50. package/apps/app-lifeops/src/actions/life.d.ts.map +1 -1
  51. package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +1 -1
  52. package/apps/app-lifeops/src/actions/life.extractor.js +6 -11
  53. package/apps/app-lifeops/src/actions/life.js +29 -62
  54. package/apps/app-lifeops/src/actions/lifeops-google-helpers.d.ts.map +1 -1
  55. package/apps/app-lifeops/src/actions/lifeops-google-helpers.js +19 -1
  56. package/apps/app-lifeops/src/actions/list-remote-sessions.js +1 -1
  57. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +14 -0
  58. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +1 -1
  59. package/apps/app-lifeops/src/actions/non-actionable-request.js +25 -0
  60. package/apps/app-lifeops/src/actions/owner-app-block.d.ts +12 -0
  61. package/apps/app-lifeops/src/actions/owner-app-block.d.ts.map +1 -0
  62. package/apps/app-lifeops/src/actions/owner-app-block.js +136 -0
  63. package/apps/app-lifeops/src/actions/owner-calendar.d.ts +14 -0
  64. package/apps/app-lifeops/src/actions/owner-calendar.d.ts.map +1 -0
  65. package/apps/app-lifeops/src/actions/owner-calendar.js +679 -0
  66. package/apps/app-lifeops/src/actions/owner-inbox.d.ts +5 -0
  67. package/apps/app-lifeops/src/actions/owner-inbox.d.ts.map +1 -0
  68. package/apps/app-lifeops/src/actions/owner-inbox.js +646 -0
  69. package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts +12 -0
  70. package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts.map +1 -0
  71. package/apps/app-lifeops/src/actions/owner-remote-desktop.js +163 -0
  72. package/apps/app-lifeops/src/actions/owner-schedule.d.ts +3 -0
  73. package/apps/app-lifeops/src/actions/owner-schedule.d.ts.map +1 -0
  74. package/apps/app-lifeops/src/actions/owner-schedule.js +160 -0
  75. package/apps/app-lifeops/src/actions/owner-screen-time.d.ts +10 -0
  76. package/apps/app-lifeops/src/actions/owner-screen-time.d.ts.map +1 -0
  77. package/apps/app-lifeops/src/actions/owner-screen-time.js +194 -0
  78. package/apps/app-lifeops/src/actions/owner-website-block.d.ts +12 -0
  79. package/apps/app-lifeops/src/actions/owner-website-block.d.ts.map +1 -0
  80. package/apps/app-lifeops/src/actions/owner-website-block.js +391 -0
  81. package/apps/app-lifeops/src/actions/password-manager.d.ts.map +1 -1
  82. package/apps/app-lifeops/src/actions/password-manager.js +8 -3
  83. package/apps/app-lifeops/src/actions/relationships.d.ts +2 -1
  84. package/apps/app-lifeops/src/actions/relationships.d.ts.map +1 -1
  85. package/apps/app-lifeops/src/actions/relationships.js +227 -24
  86. package/apps/app-lifeops/src/actions/remote-desktop.js +3 -3
  87. package/apps/app-lifeops/src/actions/revoke-remote-session.js +1 -1
  88. package/apps/app-lifeops/src/actions/scheduling.d.ts.map +1 -1
  89. package/apps/app-lifeops/src/actions/scheduling.js +47 -22
  90. package/apps/app-lifeops/src/actions/search-across-channels.d.ts.map +1 -1
  91. package/apps/app-lifeops/src/actions/search-across-channels.js +16 -15
  92. package/apps/app-lifeops/src/actions/start-remote-session.d.ts.map +1 -1
  93. package/apps/app-lifeops/src/actions/start-remote-session.js +4 -3
  94. package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +1 -1
  95. package/apps/app-lifeops/src/actions/subscriptions.js +11 -0
  96. package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +1 -1
  97. package/apps/app-lifeops/src/actions/twilio-call.js +13 -9
  98. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +1 -1
  99. package/apps/app-lifeops/src/actions/update-owner-profile.js +35 -6
  100. package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
  101. package/apps/app-lifeops/src/actions/website-blocker.js +21 -10
  102. package/apps/app-lifeops/src/actions/x-read.d.ts.map +1 -1
  103. package/apps/app-lifeops/src/actions/x-read.js +16 -5
  104. package/apps/app-lifeops/src/activity-profile/activity-tracker-reporting.d.ts +7 -0
  105. package/apps/app-lifeops/src/activity-profile/activity-tracker-reporting.d.ts.map +1 -1
  106. package/apps/app-lifeops/src/activity-profile/activity-tracker-reporting.js +17 -5
  107. package/apps/app-lifeops/src/activity-profile/analyzer.d.ts.map +1 -1
  108. package/apps/app-lifeops/src/activity-profile/analyzer.js +19 -3
  109. package/apps/app-lifeops/src/activity-profile/proactive-planner.d.ts.map +1 -1
  110. package/apps/app-lifeops/src/activity-profile/proactive-planner.js +40 -6
  111. package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts +1 -1
  112. package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts.map +1 -1
  113. package/apps/app-lifeops/src/activity-profile/proactive-worker.js +35 -5
  114. package/apps/app-lifeops/src/activity-profile/service.d.ts.map +1 -1
  115. package/apps/app-lifeops/src/activity-profile/service.js +18 -1
  116. package/apps/app-lifeops/src/dossier/action.js +1 -1
  117. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +1 -1
  118. package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +1 -1
  119. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +1 -1
  120. package/apps/app-lifeops/src/followup/followup-tracker.d.ts +4 -0
  121. package/apps/app-lifeops/src/followup/followup-tracker.d.ts.map +1 -1
  122. package/apps/app-lifeops/src/followup/followup-tracker.js +32 -4
  123. package/apps/app-lifeops/src/followup/index.d.ts +1 -1
  124. package/apps/app-lifeops/src/followup/index.d.ts.map +1 -1
  125. package/apps/app-lifeops/src/followup/index.js +1 -1
  126. package/apps/app-lifeops/src/inbox/types.d.ts +1 -0
  127. package/apps/app-lifeops/src/inbox/types.d.ts.map +1 -1
  128. package/apps/app-lifeops/src/lifeops/app-state.d.ts.map +1 -1
  129. package/apps/app-lifeops/src/lifeops/app-state.js +2 -1
  130. package/apps/app-lifeops/src/lifeops/approval-queue.d.ts +24 -0
  131. package/apps/app-lifeops/src/lifeops/approval-queue.d.ts.map +1 -0
  132. package/apps/app-lifeops/src/lifeops/approval-queue.js +271 -0
  133. package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts +32 -1
  134. package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts.map +1 -1
  135. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts +2 -1
  136. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts.map +1 -1
  137. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.js +6 -1
  138. package/apps/app-lifeops/src/lifeops/background-planner.d.ts.map +1 -1
  139. package/apps/app-lifeops/src/lifeops/background-planner.js +45 -0
  140. package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.d.ts +57 -0
  141. package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.d.ts.map +1 -0
  142. package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.js +267 -0
  143. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts +1 -1
  144. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +1 -1
  145. package/apps/app-lifeops/src/lifeops/calendly-client.js +17 -3
  146. package/apps/app-lifeops/src/lifeops/checkin/checkin-service.d.ts +4 -1
  147. package/apps/app-lifeops/src/lifeops/checkin/checkin-service.d.ts.map +1 -1
  148. package/apps/app-lifeops/src/lifeops/checkin/checkin-service.js +46 -26
  149. package/apps/app-lifeops/src/lifeops/checkin/types.d.ts +6 -0
  150. package/apps/app-lifeops/src/lifeops/checkin/types.d.ts.map +1 -1
  151. package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.d.ts +64 -0
  152. package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.d.ts.map +1 -0
  153. package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.js +270 -0
  154. package/apps/app-lifeops/src/lifeops/email-unsubscribe-types.d.ts +67 -0
  155. package/apps/app-lifeops/src/lifeops/email-unsubscribe-types.d.ts.map +1 -0
  156. package/apps/app-lifeops/src/lifeops/email-unsubscribe-types.js +1 -0
  157. package/apps/app-lifeops/src/lifeops/engine.d.ts.map +1 -1
  158. package/apps/app-lifeops/src/lifeops/engine.js +9 -11
  159. package/apps/app-lifeops/src/lifeops/feature-flags.d.ts +20 -0
  160. package/apps/app-lifeops/src/lifeops/feature-flags.d.ts.map +1 -0
  161. package/apps/app-lifeops/src/lifeops/feature-flags.js +237 -0
  162. package/apps/app-lifeops/src/lifeops/feature-flags.types.d.ts +119 -0
  163. package/apps/app-lifeops/src/lifeops/feature-flags.types.d.ts.map +1 -0
  164. package/apps/app-lifeops/src/lifeops/feature-flags.types.js +165 -0
  165. package/apps/app-lifeops/src/lifeops/goal-grounding.d.ts.map +1 -1
  166. package/apps/app-lifeops/src/lifeops/goal-grounding.js +1 -6
  167. package/apps/app-lifeops/src/lifeops/goal-semantic-evaluator.d.ts.map +1 -1
  168. package/apps/app-lifeops/src/lifeops/goal-semantic-evaluator.js +8 -2
  169. package/apps/app-lifeops/src/lifeops/google-scopes.d.ts +2 -0
  170. package/apps/app-lifeops/src/lifeops/google-scopes.d.ts.map +1 -1
  171. package/apps/app-lifeops/src/lifeops/google-scopes.js +11 -0
  172. package/apps/app-lifeops/src/lifeops/health-bridge.d.ts.map +1 -1
  173. package/apps/app-lifeops/src/lifeops/health-bridge.js +2 -3
  174. package/apps/app-lifeops/src/lifeops/intent-sync.d.ts +11 -8
  175. package/apps/app-lifeops/src/lifeops/intent-sync.d.ts.map +1 -1
  176. package/apps/app-lifeops/src/lifeops/intent-sync.js +123 -8
  177. package/apps/app-lifeops/src/lifeops/notifications-push.d.ts +1 -1
  178. package/apps/app-lifeops/src/lifeops/notifications-push.d.ts.map +1 -1
  179. package/apps/app-lifeops/src/lifeops/notifications-push.js +4 -2
  180. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +1 -0
  181. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +1 -1
  182. package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +3 -1
  183. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts +1 -0
  184. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +1 -1
  185. package/apps/app-lifeops/src/lifeops/remote-desktop.js +1 -0
  186. package/apps/app-lifeops/src/lifeops/repository.d.ts +37 -4
  187. package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
  188. package/apps/app-lifeops/src/lifeops/repository.js +401 -683
  189. package/apps/app-lifeops/src/lifeops/runtime.d.ts +4 -0
  190. package/apps/app-lifeops/src/lifeops/runtime.d.ts.map +1 -1
  191. package/apps/app-lifeops/src/lifeops/runtime.js +43 -29
  192. package/apps/app-lifeops/src/lifeops/schedule-insight.d.ts +63 -0
  193. package/apps/app-lifeops/src/lifeops/schedule-insight.d.ts.map +1 -0
  194. package/apps/app-lifeops/src/lifeops/schedule-insight.js +589 -0
  195. package/apps/app-lifeops/src/lifeops/schedule-state.d.ts +39 -0
  196. package/apps/app-lifeops/src/lifeops/schedule-state.d.ts.map +1 -0
  197. package/apps/app-lifeops/src/lifeops/schedule-state.js +625 -0
  198. package/apps/app-lifeops/src/lifeops/schedule-sync-client.d.ts +35 -0
  199. package/apps/app-lifeops/src/lifeops/schedule-sync-client.d.ts.map +1 -0
  200. package/apps/app-lifeops/src/lifeops/schedule-sync-client.js +184 -0
  201. package/apps/app-lifeops/src/lifeops/schedule-sync-contracts.d.ts +86 -0
  202. package/apps/app-lifeops/src/lifeops/schedule-sync-contracts.d.ts.map +1 -0
  203. package/apps/app-lifeops/src/lifeops/schedule-sync-contracts.js +22 -0
  204. package/apps/app-lifeops/src/lifeops/schema.d.ts +2403 -590
  205. package/apps/app-lifeops/src/lifeops/schema.d.ts.map +1 -1
  206. package/apps/app-lifeops/src/lifeops/schema.js +87 -1
  207. package/apps/app-lifeops/src/lifeops/service-helpers-browser.d.ts +10 -1
  208. package/apps/app-lifeops/src/lifeops/service-helpers-browser.d.ts.map +1 -1
  209. package/apps/app-lifeops/src/lifeops/service-helpers-browser.js +11 -2
  210. package/apps/app-lifeops/src/lifeops/service-mixin-browser.js +117 -40
  211. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts +2 -0
  212. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts.map +1 -1
  213. package/apps/app-lifeops/src/lifeops/service-mixin-core.js +4 -1
  214. package/apps/app-lifeops/src/lifeops/service-mixin-discord.js +1 -6
  215. package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.d.ts +2 -0
  216. package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.d.ts.map +1 -0
  217. package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.js +320 -0
  218. package/apps/app-lifeops/src/lifeops/service-mixin-goals.js +15 -0
  219. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.d.ts.map +1 -1
  220. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.js +330 -23
  221. package/apps/app-lifeops/src/lifeops/service-mixin-scheduling.js +168 -0
  222. package/apps/app-lifeops/src/lifeops/service-mixin-screentime.js +174 -29
  223. package/apps/app-lifeops/src/lifeops/service-mixin-signal.js +39 -22
  224. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +32 -3
  225. package/apps/app-lifeops/src/lifeops/service-mixin-travel.d.ts +33 -0
  226. package/apps/app-lifeops/src/lifeops/service-mixin-travel.d.ts.map +1 -0
  227. package/apps/app-lifeops/src/lifeops/service-mixin-travel.js +274 -0
  228. package/apps/app-lifeops/src/lifeops/service-mixin-whatsapp.js +24 -1
  229. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.js +1 -1
  230. package/apps/app-lifeops/src/lifeops/service-mixin-x-read.js +58 -4
  231. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts +1 -0
  232. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts.map +1 -1
  233. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.js +11 -0
  234. package/apps/app-lifeops/src/lifeops/service-normalize-connector.js +1 -1
  235. package/apps/app-lifeops/src/lifeops/service-types.d.ts +7 -0
  236. package/apps/app-lifeops/src/lifeops/service-types.d.ts.map +1 -1
  237. package/apps/app-lifeops/src/lifeops/service.d.ts +188 -36
  238. package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
  239. package/apps/app-lifeops/src/lifeops/service.js +3 -1
  240. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts +4 -1
  241. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts.map +1 -1
  242. package/apps/app-lifeops/src/lifeops/signal-auth.js +5 -3
  243. package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts +61 -0
  244. package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts.map +1 -0
  245. package/apps/app-lifeops/src/lifeops/signal-local-client.js +120 -0
  246. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts +13 -1
  247. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts.map +1 -1
  248. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.js +595 -0
  249. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts +181 -0
  250. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts.map +1 -0
  251. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.js +397 -0
  252. package/apps/app-lifeops/src/lifeops/travel-booking.types.d.ts +46 -0
  253. package/apps/app-lifeops/src/lifeops/travel-booking.types.d.ts.map +1 -0
  254. package/apps/app-lifeops/src/lifeops/travel-booking.types.js +1 -0
  255. package/apps/app-lifeops/src/lifeops/twilio.js +1 -1
  256. package/apps/app-lifeops/src/lifeops/unified-search.d.ts.map +1 -1
  257. package/apps/app-lifeops/src/lifeops/unified-search.js +13 -1
  258. package/apps/app-lifeops/src/lifeops/x-poster.js +1 -1
  259. package/apps/app-lifeops/src/lifeops/x402-payment-handler.d.ts +85 -0
  260. package/apps/app-lifeops/src/lifeops/x402-payment-handler.d.ts.map +1 -0
  261. package/apps/app-lifeops/src/lifeops/x402-payment-handler.js +142 -0
  262. package/apps/app-lifeops/src/plugin.d.ts +4 -5
  263. package/apps/app-lifeops/src/plugin.d.ts.map +1 -1
  264. package/apps/app-lifeops/src/plugin.js +55 -70
  265. package/apps/app-lifeops/src/provider.js +1 -1
  266. package/apps/app-lifeops/src/providers/activity-profile.js +1 -1
  267. package/apps/app-lifeops/src/providers/cross-channel-context.js +1 -1
  268. package/apps/app-lifeops/src/providers/inbox-triage.js +3 -3
  269. package/apps/app-lifeops/src/providers/lifeops.d.ts.map +1 -1
  270. package/apps/app-lifeops/src/providers/lifeops.js +19 -17
  271. package/apps/app-lifeops/src/providers/website-blocker.js +1 -1
  272. package/apps/app-lifeops/src/routes/lifeops-browser-packaging.d.ts +12 -1
  273. package/apps/app-lifeops/src/routes/lifeops-browser-packaging.d.ts.map +1 -1
  274. package/apps/app-lifeops/src/routes/lifeops-browser-packaging.js +91 -3
  275. package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
  276. package/apps/app-lifeops/src/routes/lifeops-routes.js +196 -10
  277. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
  278. package/apps/app-lifeops/src/routes/plugin.js +20 -3
  279. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts.map +1 -1
  280. package/apps/app-lifeops/src/routes/website-blocker-routes.js +3 -2
  281. package/apps/app-lifeops/src/travel-time/action.js +1 -1
  282. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +1 -1
  283. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +22 -3
  284. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.d.ts.map +1 -1
  285. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.js +35 -9
  286. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.d.ts.map +1 -1
  287. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.js +40 -90
  288. package/apps/app-lifeops/src/website-blocker/engine.d.ts +6 -0
  289. package/apps/app-lifeops/src/website-blocker/engine.d.ts.map +1 -1
  290. package/apps/app-lifeops/src/website-blocker/engine.js +209 -6
  291. package/apps/app-steward/src/api/tx-service.js +1 -1
  292. package/apps/app-steward/src/api/wallet-routes.js +1 -1
  293. package/apps/app-training/src/core/context-catalog.d.ts.map +1 -1
  294. package/apps/app-training/src/core/context-catalog.js +6 -0
  295. package/apps/app-training/src/core/ensure-cron-job.d.ts +53 -0
  296. package/apps/app-training/src/core/ensure-cron-job.d.ts.map +1 -0
  297. package/apps/app-training/src/core/ensure-cron-job.js +46 -0
  298. package/apps/app-training/src/core/skill-scoring-cron.d.ts +2 -2
  299. package/apps/app-training/src/core/skill-scoring-cron.d.ts.map +1 -1
  300. package/apps/app-training/src/core/skill-scoring-cron.js +12 -11
  301. package/apps/app-training/src/core/trajectory-export-cron.d.ts.map +1 -1
  302. package/apps/app-training/src/core/trajectory-export-cron.js +10 -9
  303. package/i18n/locales/en.json +55 -1
  304. package/package.json +8 -6
  305. package/packages/agent/src/actions/agent-inbox.d.ts +14 -0
  306. package/packages/agent/src/actions/agent-inbox.d.ts.map +1 -0
  307. package/packages/agent/src/actions/agent-inbox.js +124 -0
  308. package/packages/agent/src/actions/connector-resolver.d.ts +1 -1
  309. package/packages/agent/src/actions/connector-resolver.d.ts.map +1 -1
  310. package/packages/agent/src/actions/connector-resolver.js +5 -4
  311. package/packages/agent/src/actions/eject-plugin.d.ts +3 -0
  312. package/packages/agent/src/actions/eject-plugin.d.ts.map +1 -0
  313. package/packages/agent/src/actions/eject-plugin.js +80 -0
  314. package/packages/agent/src/actions/entity-actions.d.ts.map +1 -1
  315. package/packages/agent/src/actions/entity-actions.js +6 -5
  316. package/packages/agent/src/actions/get-self-status.d.ts +13 -0
  317. package/packages/agent/src/actions/get-self-status.d.ts.map +1 -0
  318. package/packages/agent/src/actions/get-self-status.js +107 -0
  319. package/packages/agent/src/actions/grounded-action-reply.d.ts +1 -1
  320. package/packages/agent/src/actions/grounded-action-reply.d.ts.map +1 -1
  321. package/packages/agent/src/actions/grounded-action-reply.js +3 -23
  322. package/packages/agent/src/actions/index.d.ts +18 -0
  323. package/packages/agent/src/actions/index.d.ts.map +1 -0
  324. package/packages/agent/src/actions/index.js +17 -0
  325. package/packages/agent/src/actions/install-plugin.d.ts +3 -0
  326. package/packages/agent/src/actions/install-plugin.d.ts.map +1 -0
  327. package/packages/agent/src/actions/install-plugin.js +97 -0
  328. package/packages/agent/src/actions/list-ejected.d.ts +3 -0
  329. package/packages/agent/src/actions/list-ejected.d.ts.map +1 -0
  330. package/packages/agent/src/actions/list-ejected.js +79 -0
  331. package/packages/agent/src/actions/log-level.d.ts +3 -0
  332. package/packages/agent/src/actions/log-level.d.ts.map +1 -0
  333. package/packages/agent/src/actions/log-level.js +126 -0
  334. package/packages/agent/src/actions/media.d.ts +21 -0
  335. package/packages/agent/src/actions/media.d.ts.map +1 -0
  336. package/packages/agent/src/actions/media.js +504 -0
  337. package/packages/agent/src/actions/read-messages.d.ts +14 -0
  338. package/packages/agent/src/actions/read-messages.d.ts.map +1 -0
  339. package/packages/agent/src/actions/read-messages.js +258 -0
  340. package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -1
  341. package/packages/agent/src/actions/recent-conversation-texts.js +6 -11
  342. package/packages/agent/src/actions/reinject-plugin.d.ts +3 -0
  343. package/packages/agent/src/actions/reinject-plugin.d.ts.map +1 -0
  344. package/packages/agent/src/actions/reinject-plugin.js +79 -0
  345. package/packages/agent/src/actions/send-message.d.ts.map +1 -1
  346. package/packages/agent/src/actions/send-message.js +11 -6
  347. package/packages/agent/src/actions/set-user-name.d.ts.map +1 -1
  348. package/packages/agent/src/actions/set-user-name.js +4 -9
  349. package/packages/agent/src/actions/stream-control.d.ts +11 -0
  350. package/packages/agent/src/actions/stream-control.d.ts.map +1 -0
  351. package/packages/agent/src/actions/stream-control.js +182 -0
  352. package/packages/agent/src/actions/sync-plugin.d.ts +3 -0
  353. package/packages/agent/src/actions/sync-plugin.d.ts.map +1 -0
  354. package/packages/agent/src/actions/sync-plugin.js +76 -0
  355. package/packages/agent/src/api/chat-routes.d.ts +1 -0
  356. package/packages/agent/src/api/chat-routes.d.ts.map +1 -1
  357. package/packages/agent/src/api/chat-routes.js +7 -20
  358. package/packages/agent/src/api/client-chat-admin.d.ts +19 -0
  359. package/packages/agent/src/api/client-chat-admin.d.ts.map +1 -0
  360. package/packages/agent/src/api/client-chat-admin.js +27 -0
  361. package/packages/agent/src/api/cloud-features-routes.d.ts +29 -0
  362. package/packages/agent/src/api/cloud-features-routes.d.ts.map +1 -0
  363. package/packages/agent/src/api/cloud-features-routes.js +190 -0
  364. package/packages/agent/src/api/compat-utils.d.ts.map +1 -1
  365. package/packages/agent/src/api/compat-utils.js +1 -5
  366. package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -1
  367. package/packages/agent/src/api/conversation-metadata.js +2 -13
  368. package/packages/agent/src/api/conversation-routes.d.ts +1 -0
  369. package/packages/agent/src/api/conversation-routes.d.ts.map +1 -1
  370. package/packages/agent/src/api/conversation-routes.js +16 -23
  371. package/packages/agent/src/api/duffel-relay-routes.d.ts +47 -0
  372. package/packages/agent/src/api/duffel-relay-routes.d.ts.map +1 -0
  373. package/packages/agent/src/api/duffel-relay-routes.js +178 -0
  374. package/packages/agent/src/api/index.d.ts +1 -0
  375. package/packages/agent/src/api/index.d.ts.map +1 -1
  376. package/packages/agent/src/api/index.js +1 -0
  377. package/packages/agent/src/api/misc-routes.d.ts.map +1 -1
  378. package/packages/agent/src/api/misc-routes.js +1 -6
  379. package/packages/agent/src/api/onboarding-routes.d.ts.map +1 -1
  380. package/packages/agent/src/api/onboarding-routes.js +1 -5
  381. package/packages/agent/src/api/provider-switch-config.d.ts.map +1 -1
  382. package/packages/agent/src/api/provider-switch-config.js +2 -12
  383. package/packages/agent/src/api/server-helpers-swarm.d.ts.map +1 -1
  384. package/packages/agent/src/api/server-helpers-swarm.js +2 -2
  385. package/packages/agent/src/api/server.d.ts.map +1 -1
  386. package/packages/agent/src/api/server.js +70 -31
  387. package/packages/agent/src/config/index.d.ts +1 -0
  388. package/packages/agent/src/config/index.d.ts.map +1 -1
  389. package/packages/agent/src/config/index.js +1 -0
  390. package/packages/agent/src/diagnostics/index.d.ts +2 -0
  391. package/packages/agent/src/diagnostics/index.d.ts.map +1 -0
  392. package/packages/agent/src/diagnostics/index.js +1 -0
  393. package/packages/agent/src/providers/conversation-utils.d.ts.map +1 -1
  394. package/packages/agent/src/providers/conversation-utils.js +2 -11
  395. package/packages/agent/src/providers/media-provider.d.ts +192 -0
  396. package/packages/agent/src/providers/media-provider.d.ts.map +1 -0
  397. package/packages/agent/src/providers/media-provider.js +1088 -0
  398. package/packages/agent/src/providers/rolodex.d.ts.map +1 -1
  399. package/packages/agent/src/providers/rolodex.js +2 -1
  400. package/packages/agent/src/providers/skill-provider.d.ts.map +1 -1
  401. package/packages/agent/src/providers/skill-provider.js +8 -13
  402. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
  403. package/packages/agent/src/runtime/eliza-plugin.js +4 -1
  404. package/packages/agent/src/runtime/index.d.ts +1 -0
  405. package/packages/agent/src/runtime/index.d.ts.map +1 -1
  406. package/packages/agent/src/runtime/index.js +1 -0
  407. package/packages/agent/src/runtime/plugin-role-gating.d.ts.map +1 -1
  408. package/packages/agent/src/runtime/plugin-role-gating.js +1 -0
  409. package/packages/agent/src/runtime/roles/src/action.d.ts.map +1 -1
  410. package/packages/agent/src/runtime/roles/src/action.js +23 -35
  411. package/packages/agent/src/runtime/roles/src/intent.d.ts.map +1 -1
  412. package/packages/agent/src/runtime/roles/src/intent.js +6 -11
  413. package/packages/agent/src/runtime/trajectory-internals.d.ts +2 -1
  414. package/packages/agent/src/runtime/trajectory-internals.d.ts.map +1 -1
  415. package/packages/agent/src/runtime/trajectory-internals.js +2 -8
  416. package/packages/agent/src/security/index.d.ts +4 -0
  417. package/packages/agent/src/security/index.d.ts.map +1 -0
  418. package/packages/agent/src/security/index.js +3 -0
  419. package/packages/agent/src/services/relationships-graph.d.ts +9 -0
  420. package/packages/agent/src/services/relationships-graph.d.ts.map +1 -1
  421. package/packages/agent/src/services/relationships-graph.js +28 -8
  422. package/packages/app-core/src/api/client-n8n.d.ts +1 -0
  423. package/packages/app-core/src/api/client-n8n.d.ts.map +1 -1
  424. package/packages/app-core/src/api/client-n8n.js +3 -0
  425. package/packages/app-core/src/api/client-types-chat.d.ts +24 -0
  426. package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -1
  427. package/packages/app-core/src/api/cloud-routes.js +1 -1
  428. package/packages/app-core/src/api/n8n-routes.d.ts +10 -0
  429. package/packages/app-core/src/api/n8n-routes.d.ts.map +1 -1
  430. package/packages/app-core/src/api/n8n-routes.js +105 -0
  431. package/packages/app-core/src/api/plugins-compat-routes.d.ts.map +1 -1
  432. package/packages/app-core/src/api/plugins-compat-routes.js +1 -6
  433. package/packages/app-core/src/benchmark/replay-capture.d.ts.map +1 -1
  434. package/packages/app-core/src/benchmark/replay-capture.js +1 -5
  435. package/packages/app-core/src/components/apps/babylon-data.d.ts.map +1 -1
  436. package/packages/app-core/src/components/apps/babylon-data.js +1 -5
  437. package/packages/app-core/src/components/chat/AppsSection.d.ts.map +1 -1
  438. package/packages/app-core/src/components/chat/AppsSection.js +11 -14
  439. package/packages/app-core/src/components/chat/widgets/plugins/agent-orchestrator.d.ts.map +1 -1
  440. package/packages/app-core/src/components/chat/widgets/plugins/agent-orchestrator.js +96 -22
  441. package/packages/app-core/src/components/pages/AutomationRoomChatPane.d.ts.map +1 -1
  442. package/packages/app-core/src/components/pages/AutomationRoomChatPane.js +177 -11
  443. package/packages/app-core/src/components/pages/AutomationsView.d.ts.map +1 -1
  444. package/packages/app-core/src/components/pages/AutomationsView.js +271 -54
  445. package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts.map +1 -1
  446. package/packages/app-core/src/components/pages/BrowserWorkspaceView.js +148 -12
  447. package/packages/app-core/src/components/pages/HeartbeatForm.d.ts.map +1 -1
  448. package/packages/app-core/src/components/pages/HeartbeatForm.js +64 -4
  449. package/packages/app-core/src/components/pages/N8nWorkflowsPanel.d.ts.map +1 -1
  450. package/packages/app-core/src/components/pages/N8nWorkflowsPanel.js +24 -12
  451. package/packages/app-core/src/components/pages/SettingsView.d.ts.map +1 -1
  452. package/packages/app-core/src/components/pages/SettingsView.js +21 -1
  453. package/packages/app-core/src/components/pages/WorkflowGraphViewer.d.ts +23 -0
  454. package/packages/app-core/src/components/pages/WorkflowGraphViewer.d.ts.map +1 -0
  455. package/packages/app-core/src/components/pages/WorkflowGraphViewer.js +303 -0
  456. package/packages/app-core/src/components/pages/heartbeat-utils.d.ts +22 -0
  457. package/packages/app-core/src/components/pages/heartbeat-utils.d.ts.map +1 -1
  458. package/packages/app-core/src/components/pages/heartbeat-utils.js +61 -18
  459. package/packages/app-core/src/components/settings/FeatureTogglesSection.d.ts +20 -0
  460. package/packages/app-core/src/components/settings/FeatureTogglesSection.d.ts.map +1 -0
  461. package/packages/app-core/src/components/settings/FeatureTogglesSection.js +155 -0
  462. package/packages/app-core/src/hooks/useWorkflowGenerationState.d.ts +23 -0
  463. package/packages/app-core/src/hooks/useWorkflowGenerationState.d.ts.map +1 -0
  464. package/packages/app-core/src/hooks/useWorkflowGenerationState.js +45 -0
  465. package/packages/app-core/src/i18n/locales/en.json +55 -1
  466. package/packages/app-core/src/navigation/index.d.ts.map +1 -1
  467. package/packages/app-core/src/navigation/index.js +4 -0
  468. package/packages/app-core/src/state/AppContext.js +2 -2
  469. package/packages/app-core/src/state/config-readers.d.ts +2 -1
  470. package/packages/app-core/src/state/config-readers.d.ts.map +1 -1
  471. package/packages/app-core/src/state/config-readers.js +3 -11
  472. package/packages/app-core/src/state/parsers.d.ts.map +1 -1
  473. package/packages/app-core/src/state/parsers.js +11 -0
  474. package/packages/shared/src/awareness/index.d.ts +2 -0
  475. package/packages/shared/src/awareness/index.d.ts.map +1 -0
  476. package/packages/shared/src/awareness/index.js +1 -0
  477. package/packages/shared/src/awareness/registry.d.ts +27 -0
  478. package/packages/shared/src/awareness/registry.d.ts.map +1 -0
  479. package/packages/shared/src/awareness/registry.js +161 -0
  480. package/packages/shared/src/contracts/lifeops-extensions.d.ts +2 -0
  481. package/packages/shared/src/contracts/lifeops-extensions.d.ts.map +1 -1
  482. package/packages/shared/src/contracts/lifeops.d.ts +94 -2
  483. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  484. package/packages/shared/src/contracts/lifeops.js +22 -0
  485. package/packages/shared/src/contracts/service-routing.d.ts.map +1 -1
  486. package/packages/shared/src/contracts/service-routing.js +1 -5
  487. package/packages/shared/src/index.d.ts +2 -0
  488. package/packages/shared/src/index.d.ts.map +1 -1
  489. package/packages/shared/src/index.js +2 -0
  490. package/packages/shared/src/recent-messages-state.d.ts +10 -0
  491. package/packages/shared/src/recent-messages-state.d.ts.map +1 -0
  492. package/packages/shared/src/recent-messages-state.js +11 -0
  493. package/packages/shared/src/type-guards.d.ts +29 -0
  494. package/packages/shared/src/type-guards.d.ts.map +1 -0
  495. package/packages/shared/src/type-guards.js +43 -0
  496. package/packages/typescript/src/actions.d.ts.map +1 -1
  497. package/packages/typescript/src/actions.js +11 -0
  498. package/packages/typescript/src/database/inMemoryAdapter.d.ts.map +1 -1
  499. package/packages/typescript/src/database/inMemoryAdapter.js +14 -2
  500. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.d.ts.map +1 -1
  501. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.js +2 -1
  502. package/packages/typescript/src/features/advanced-capabilities/actions/settings.js +2 -2
  503. package/packages/typescript/src/features/advanced-capabilities/evaluators/reflection.d.ts.map +1 -1
  504. package/packages/typescript/src/features/advanced-capabilities/evaluators/reflection.js +49 -5
  505. package/packages/typescript/src/features/basic-capabilities/providers/actions.js +2 -2
  506. package/packages/typescript/src/features/plugin-manager/providers/relevance.d.ts.map +1 -1
  507. package/packages/typescript/src/features/plugin-manager/providers/relevance.js +12 -7
  508. package/packages/typescript/src/prompts.d.ts +4 -4
  509. package/packages/typescript/src/prompts.d.ts.map +1 -1
  510. package/packages/typescript/src/prompts.js +2 -0
  511. package/packages/typescript/src/runtime.d.ts.map +1 -1
  512. package/packages/typescript/src/runtime.js +27 -4
  513. package/packages/typescript/src/services/message.d.ts +4 -1
  514. package/packages/typescript/src/services/message.d.ts.map +1 -1
  515. package/packages/typescript/src/services/message.js +602 -193
  516. package/packages/typescript/src/services/relationships.d.ts.map +1 -1
  517. package/packages/typescript/src/services/relationships.js +34 -0
  518. package/packages/typescript/src/services/task.d.ts.map +1 -1
  519. package/packages/typescript/src/services/task.js +14 -7
  520. package/packages/typescript/src/utils/context-catalog.d.ts.map +1 -1
  521. package/packages/typescript/src/utils/context-catalog.js +7 -0
  522. package/styles/styles.css +2 -0
  523. package/packages/agent/src/runtime/task-heartbeat.d.ts +0 -22
  524. package/packages/agent/src/runtime/task-heartbeat.d.ts.map +0 -1
  525. package/packages/agent/src/runtime/task-heartbeat.js +0 -84
@@ -5,7 +5,7 @@
5
5
  * companion app. Session gating is applied at the plugin level
6
6
  * (`gatePluginSessionForHostedApp`).
7
7
  */
8
- import { hasRoleAccess } from "@elizaos/agent/security/access";
8
+ import { hasRoleAccess } from "@elizaos/agent/security";
9
9
  import { AGENT_EMOTE_BY_ID, AGENT_EMOTE_CATALOG } from "../emotes/catalog.js";
10
10
  /** API port for posting emote requests (matches dashboard static server default). */
11
11
  const API_PORT = process.env.API_PORT || process.env.SERVER_PORT || "2138";
@@ -10,7 +10,7 @@ import fs from "node:fs";
10
10
  import path from "node:path";
11
11
  import { logger } from "@elizaos/core";
12
12
  import { resolveStateDir } from "@elizaos/agent/config/paths";
13
- import { createIntegrationTelemetrySpan } from "@elizaos/agent/diagnostics/integration-observability";
13
+ import { createIntegrationTelemetrySpan } from "@elizaos/agent/diagnostics";
14
14
  const WHITELIST_FILE = "whitelist.json";
15
15
  // ── Verification Message ─────────────────────────────────────────────────
16
16
  export function generateVerificationMessage(agentName, walletAddress) {
@@ -1,4 +1,4 @@
1
- import { hasAdminAccess } from "@elizaos/agent/security/access";
1
+ import { hasAdminAccess } from "@elizaos/agent/security";
2
2
  import { LifeOpsService, LifeOpsServiceError } from "./lifeops/service.js";
3
3
  const URL_RE = /https?:\/\/[^\s)]+/i;
4
4
  function getMessageText(message) {
@@ -1 +1 @@
1
- {"version":3,"file":"app-blocker.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/app-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAwMvB,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IACrC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAmN1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MA6D/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MA2ErC,CAAC"}
1
+ {"version":3,"file":"app-blocker.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/app-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AA2MvB,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IACrC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAwN1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MA6D/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MA2ErC,CAAC"}
@@ -5,6 +5,7 @@ import { recentConversationTexts as collectRecentConversationTexts } from "./lif
5
5
  function getMessageText(message) {
6
6
  return typeof message.content?.text === "string" ? message.content.text : "";
7
7
  }
8
+ const APP_BLOCK_INTENT_RE = /\b(block|blocking|blocked|unblock|unblocking|shield|app block|block apps|phone apps|focus mode|restrict apps)\b/i;
8
9
  function normalizeShouldAct(value) {
9
10
  if (typeof value === "boolean") {
10
11
  return value;
@@ -159,7 +160,7 @@ export const blockAppsAction = {
159
160
  suppressPostActionContinuation: true,
160
161
  validate: async (runtime, message) => {
161
162
  const access = await getAppBlockerAccess(runtime, message);
162
- return access.allowed;
163
+ return access.allowed && APP_BLOCK_INTENT_RE.test(getMessageText(message));
163
164
  },
164
165
  handler: async (runtime, message, state, options) => {
165
166
  const access = await getAppBlockerAccess(runtime, message);
@@ -215,12 +216,17 @@ export const blockAppsAction = {
215
216
  explicitPackageNames.length === 0 &&
216
217
  !appTokens) {
217
218
  return {
218
- success: true,
219
+ success: false,
219
220
  text: llmPlan.response ??
220
221
  (status.platform === "ios"
221
222
  ? "Select the iPhone apps in the mobile app picker first, then I can start the block."
222
223
  : "Tell me which installed apps to block so I can match them exactly on your device."),
223
- data: { noop: true },
224
+ values: {
225
+ success: false,
226
+ error: "PLANNER_SHOULDACT_FALSE",
227
+ noop: true,
228
+ },
229
+ data: { noop: true, error: "PLANNER_SHOULDACT_FALSE" },
224
230
  };
225
231
  }
226
232
  const packageNames = explicitPackageNames.length > 0
@@ -330,7 +336,7 @@ export const unblockAppsAction = {
330
336
  descriptionCompressed: "Admin: remove app block, unshield all apps.",
331
337
  validate: async (runtime, message) => {
332
338
  const access = await getAppBlockerAccess(runtime, message);
333
- return access.allowed;
339
+ return access.allowed && APP_BLOCK_INTENT_RE.test(getMessageText(message));
334
340
  },
335
341
  handler: async (runtime, message) => {
336
342
  const access = await getAppBlockerAccess(runtime, message);
@@ -387,7 +393,7 @@ export const getAppBlockStatusAction = {
387
393
  descriptionCompressed: "Admin: check if app block is active.",
388
394
  validate: async (runtime, message) => {
389
395
  const access = await getAppBlockerAccess(runtime, message);
390
- return access.allowed;
396
+ return access.allowed && APP_BLOCK_INTENT_RE.test(getMessageText(message));
391
397
  },
392
398
  handler: async (runtime, message) => {
393
399
  const access = await getAppBlockerAccess(runtime, message);
@@ -0,0 +1,21 @@
1
+ /**
2
+ * APPROVE_REQUEST / REJECT_REQUEST actions.
3
+ *
4
+ * These resolve a pending `ApprovalRequest` from the LifeOps approval queue
5
+ * (WS6). Parameter extraction is LLM-driven: the handler asks TEXT_LARGE to
6
+ * pick the target request id and a resolution reason from the incoming
7
+ * message plus a snapshot of the queue. The prompt is multilingual — the
8
+ * model is instructed to understand any language and to echo the reason in
9
+ * the user's language.
10
+ */
11
+ import type { Action, ActionResult, HandlerCallback, IAgentRuntime } from "@elizaos/core";
12
+ import { type ApprovalQueue, type ApprovalRequest } from "../lifeops/approval-queue.types.js";
13
+ export declare function executeApprovedRequest(args: {
14
+ runtime: IAgentRuntime;
15
+ queue: ApprovalQueue;
16
+ request: ApprovalRequest;
17
+ callback?: HandlerCallback;
18
+ }): Promise<ActionResult>;
19
+ export declare const approveRequestAction: Action;
20
+ export declare const rejectRequestAction: Action;
21
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,MAAM,EAEN,YAAY,EACZ,eAAe,EACf,aAAa,EAEd,MAAM,eAAe,CAAC;AAIvB,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EAErB,MAAM,oCAAoC,CAAC;AAoG5C,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,GAAG,OAAO,CAAC,YAAY,CAAC,CAoGxB;AAgFD,eAAO,MAAM,oBAAoB,EAAE,MA6ClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MA6CjC,CAAC"}
@@ -0,0 +1,340 @@
1
+ /**
2
+ * APPROVE_REQUEST / REJECT_REQUEST actions.
3
+ *
4
+ * These resolve a pending `ApprovalRequest` from the LifeOps approval queue
5
+ * (WS6). Parameter extraction is LLM-driven: the handler asks TEXT_LARGE to
6
+ * pick the target request id and a resolution reason from the incoming
7
+ * message plus a snapshot of the queue. The prompt is multilingual — the
8
+ * model is instructed to understand any language and to echo the reason in
9
+ * the user's language.
10
+ */
11
+ import { ModelType, logger, parseJSONObjectFromText } from "@elizaos/core";
12
+ import { hasOwnerAccess } from "@elizaos/agent/security";
13
+ import { createApprovalQueue } from "../lifeops/approval-queue.js";
14
+ import { ApprovalNotFoundError, ApprovalStateTransitionError, } from "../lifeops/approval-queue.types.js";
15
+ import { executeApprovedBookTravel } from "./book-travel.js";
16
+ import { dispatchCrossChannelSend, } from "./cross-channel-send.js";
17
+ import { LifeOpsService } from "../lifeops/service.js";
18
+ import { INTERNAL_URL } from "./lifeops-google-helpers.js";
19
+ function formatPending(requests) {
20
+ if (requests.length === 0)
21
+ return "(no pending requests)";
22
+ return requests
23
+ .map((r, i) => {
24
+ const payloadSummary = JSON.stringify(r.payload);
25
+ return `${i + 1}. id=${r.id} action=${r.action} channel=${r.channel} reason=${r.reason} payload=${payloadSummary}`;
26
+ })
27
+ .join("\n");
28
+ }
29
+ async function extractResolution(runtime, userText, intent, pending) {
30
+ if (pending.length === 0) {
31
+ return { requestId: null, reason: null };
32
+ }
33
+ if (typeof runtime.useModel !== "function") {
34
+ if (pending.length === 1) {
35
+ return {
36
+ requestId: pending[0].id,
37
+ reason: userText.trim() || `user ${intent}d`,
38
+ };
39
+ }
40
+ return { requestId: null, reason: null };
41
+ }
42
+ const prompt = `You are resolving an approval queue decision.
43
+ The user wants to ${intent} one of the pending requests below.
44
+ Understand the user's message in any language. Echo the reason in the user's language.
45
+
46
+ User message:
47
+ """
48
+ ${userText}
49
+ """
50
+
51
+ Pending requests:
52
+ ${formatPending(pending)}
53
+
54
+ Respond as strict JSON with exactly these keys:
55
+ {
56
+ "requestId": "<id of the single targeted request, or null if ambiguous>",
57
+ "reason": "<short human-readable reason in the user's language, or null if none given>"
58
+ }`;
59
+ const raw = await runtime.useModel(ModelType.TEXT_LARGE, { prompt });
60
+ const parsed = parseJSONObjectFromText(typeof raw === "string" ? raw : "");
61
+ if (!parsed || typeof parsed !== "object") {
62
+ return { requestId: null, reason: null };
63
+ }
64
+ const record = parsed;
65
+ const requestId = typeof record.requestId === "string" && record.requestId.length > 0
66
+ ? record.requestId
67
+ : null;
68
+ const reason = typeof record.reason === "string" && record.reason.length > 0
69
+ ? record.reason
70
+ : null;
71
+ return { requestId, reason };
72
+ }
73
+ function denied(reason) {
74
+ return {
75
+ text: "",
76
+ success: false,
77
+ data: { error: reason },
78
+ };
79
+ }
80
+ function approvalChannelToCrossChannelSend(channel) {
81
+ switch (channel) {
82
+ case "telegram":
83
+ case "discord":
84
+ case "imessage":
85
+ case "sms":
86
+ return channel;
87
+ default:
88
+ return null;
89
+ }
90
+ }
91
+ export async function executeApprovedRequest(args) {
92
+ if (args.request.action === "book_travel") {
93
+ return executeApprovedBookTravel(args);
94
+ }
95
+ const service = new LifeOpsService(args.runtime);
96
+ if (args.request.action === "send_email") {
97
+ const payload = args.request.payload;
98
+ if (payload.action !== "send_email") {
99
+ throw new Error(`[approval] action/payload mismatch: action=send_email, payload.action=${payload.action}`);
100
+ }
101
+ await args.queue.markExecuting(args.request.id);
102
+ if (payload.replyToMessageId) {
103
+ await service.sendGmailReply(INTERNAL_URL, {
104
+ messageId: payload.replyToMessageId,
105
+ bodyText: payload.body,
106
+ subject: payload.subject || undefined,
107
+ to: payload.to.length > 0 ? [...payload.to] : undefined,
108
+ cc: payload.cc.length > 0 ? [...payload.cc] : undefined,
109
+ confirmSend: true,
110
+ });
111
+ }
112
+ else {
113
+ await service.sendGmailMessage(INTERNAL_URL, {
114
+ to: [...payload.to],
115
+ cc: [...payload.cc],
116
+ bcc: [...payload.bcc],
117
+ subject: payload.subject,
118
+ bodyText: payload.body,
119
+ confirmSend: true,
120
+ });
121
+ }
122
+ const done = await args.queue.markDone(args.request.id);
123
+ const text = payload.to.length > 0
124
+ ? `Approved and sent email to ${payload.to.join(", ")}.`
125
+ : "Approved and sent the Gmail reply.";
126
+ await args.callback?.({ text });
127
+ return {
128
+ text,
129
+ success: true,
130
+ data: {
131
+ requestId: done.id,
132
+ state: done.state,
133
+ action: done.action,
134
+ },
135
+ };
136
+ }
137
+ if (args.request.action === "send_message") {
138
+ const channel = approvalChannelToCrossChannelSend(args.request.channel);
139
+ if (!channel) {
140
+ return denied("UNSUPPORTED_APPROVAL_CHANNEL");
141
+ }
142
+ const payload = args.request.payload;
143
+ if (payload.action !== "send_message") {
144
+ throw new Error(`[approval] action/payload mismatch: action=send_message, payload.action=${payload.action}`);
145
+ }
146
+ await args.queue.markExecuting(args.request.id);
147
+ const dispatch = await dispatchCrossChannelSend({
148
+ runtime: args.runtime,
149
+ service,
150
+ channel,
151
+ target: payload.recipient,
152
+ body: payload.body,
153
+ });
154
+ if (!dispatch.success) {
155
+ return dispatch;
156
+ }
157
+ const done = await args.queue.markDone(args.request.id);
158
+ const text = `Approved and sent ${channel} message.`;
159
+ await args.callback?.({ text });
160
+ return {
161
+ text,
162
+ success: true,
163
+ data: {
164
+ requestId: done.id,
165
+ state: done.state,
166
+ action: done.action,
167
+ channel,
168
+ },
169
+ };
170
+ }
171
+ logger.info(`[ApprovalAction] approved ${args.request.id} without executor`);
172
+ const text = `Approved request ${args.request.id}.`;
173
+ await args.callback?.({ text });
174
+ return {
175
+ text,
176
+ success: true,
177
+ data: {
178
+ requestId: args.request.id,
179
+ state: args.request.state,
180
+ action: args.request.action,
181
+ },
182
+ };
183
+ }
184
+ async function resolveApprovalRequest(runtime, message, intent, callback) {
185
+ if (!(await hasOwnerAccess(runtime, message))) {
186
+ return denied("PERMISSION_DENIED");
187
+ }
188
+ const subjectUserId = typeof message.entityId === "string" ? message.entityId : "";
189
+ if (!subjectUserId) {
190
+ return denied("MISSING_SUBJECT_USER");
191
+ }
192
+ const queue = createApprovalQueue(runtime, { agentId: runtime.agentId });
193
+ const pending = await queue.list({
194
+ subjectUserId,
195
+ state: "pending",
196
+ action: null,
197
+ limit: 20,
198
+ });
199
+ const userText = typeof message.content?.text === "string" ? message.content.text : "";
200
+ const extracted = await extractResolution(runtime, userText, intent, pending);
201
+ if (!extracted.requestId) {
202
+ const text = pending.length === 0
203
+ ? "There are no pending approval requests."
204
+ : "Which request? Please reference it by id or describe it.";
205
+ if (callback)
206
+ await callback({ text });
207
+ return {
208
+ text,
209
+ success: false,
210
+ data: { error: "REQUEST_ID_NOT_RESOLVED", pendingCount: pending.length },
211
+ };
212
+ }
213
+ const resolution = {
214
+ resolvedBy: subjectUserId,
215
+ resolutionReason: extracted.reason ?? `user ${intent}d`,
216
+ };
217
+ try {
218
+ const updated = intent === "approve"
219
+ ? await queue.approve(extracted.requestId, resolution)
220
+ : await queue.reject(extracted.requestId, resolution);
221
+ if (intent === "approve") {
222
+ return executeApprovedRequest({
223
+ runtime,
224
+ queue,
225
+ request: updated,
226
+ callback,
227
+ });
228
+ }
229
+ logger.info(`[ApprovalAction] ${intent} ${updated.id} by ${subjectUserId}`);
230
+ const text = `Rejected request ${updated.id}.`;
231
+ if (callback)
232
+ await callback({ text });
233
+ return {
234
+ text,
235
+ success: true,
236
+ data: {
237
+ requestId: updated.id,
238
+ state: updated.state,
239
+ action: updated.action,
240
+ },
241
+ };
242
+ }
243
+ catch (error) {
244
+ if (error instanceof ApprovalNotFoundError) {
245
+ return denied("REQUEST_NOT_FOUND");
246
+ }
247
+ if (error instanceof ApprovalStateTransitionError) {
248
+ return denied("INVALID_STATE_TRANSITION");
249
+ }
250
+ throw error;
251
+ }
252
+ }
253
+ export const approveRequestAction = {
254
+ name: "APPROVE_REQUEST",
255
+ similes: [
256
+ "APPROVE",
257
+ "CONFIRM_REQUEST",
258
+ "ACCEPT_REQUEST",
259
+ "YES_DO_IT",
260
+ "GO_AHEAD",
261
+ ],
262
+ description: "Approve a pending action that the agent queued for human confirmation (send message, schedule event, book travel, etc.). Understands any language.",
263
+ validate: async (runtime, message) => hasOwnerAccess(runtime, message),
264
+ handler: async (runtime, message, _state, _options, callback) => resolveApprovalRequest(runtime, message, "approve", callback),
265
+ parameters: [],
266
+ examples: [
267
+ [
268
+ {
269
+ name: "{{name1}}",
270
+ content: {
271
+ text: "Yeah, go ahead and send that draft to Marco.",
272
+ },
273
+ },
274
+ {
275
+ name: "{{agentName}}",
276
+ content: {
277
+ text: "Approved request req-8821.",
278
+ },
279
+ },
280
+ ],
281
+ [
282
+ {
283
+ name: "{{name1}}",
284
+ content: {
285
+ text: "sounds good, do it",
286
+ },
287
+ },
288
+ {
289
+ name: "{{agentName}}",
290
+ content: {
291
+ text: "Approved request req-8912.",
292
+ },
293
+ },
294
+ ],
295
+ ],
296
+ };
297
+ export const rejectRequestAction = {
298
+ name: "REJECT_REQUEST",
299
+ similes: [
300
+ "REJECT",
301
+ "DENY_REQUEST",
302
+ "DECLINE_REQUEST",
303
+ "CANCEL_REQUEST",
304
+ "NO_DONT",
305
+ ],
306
+ description: "Reject a pending action that the agent queued for human confirmation. Understands any language.",
307
+ validate: async (runtime, message) => hasOwnerAccess(runtime, message),
308
+ handler: async (runtime, message, _state, _options, callback) => resolveApprovalRequest(runtime, message, "reject", callback),
309
+ parameters: [],
310
+ examples: [
311
+ [
312
+ {
313
+ name: "{{name1}}",
314
+ content: {
315
+ text: "No, don't send that. Let's hold off.",
316
+ },
317
+ },
318
+ {
319
+ name: "{{agentName}}",
320
+ content: {
321
+ text: "Rejected request req-8821.",
322
+ },
323
+ },
324
+ ],
325
+ [
326
+ {
327
+ name: "{{name1}}",
328
+ content: {
329
+ text: "Skip the one about the dinner reservation — we'll do it another day.",
330
+ },
331
+ },
332
+ {
333
+ name: "{{agentName}}",
334
+ content: {
335
+ text: "Rejected request req-9014.",
336
+ },
337
+ },
338
+ ],
339
+ ],
340
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/autofill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AA2BvB,iBAAe,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAK3E;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,iBAAe,kBAAkB,CAC/B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAY5B;AA2FD,eAAO,MAAM,sBAAsB,EAAE,MAsKpC,CAAC;AAOF,eAAO,MAAM,0BAA0B,EAAE,MAiHxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MA8DzC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
1
+ {"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/autofill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AA6BvB,iBAAe,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAK3E;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,iBAAe,kBAAkB,CAC/B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAY5B;AA2FD,eAAO,MAAM,sBAAsB,EAAE,MAkLpC,CAAC;AAOF,eAAO,MAAM,0BAA0B,EAAE,MA6HxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MA8DzC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
@@ -19,8 +19,10 @@
19
19
  * credential.
20
20
  */
21
21
  import { logger, } from "@elizaos/core";
22
- import { hasOwnerAccess } from "@elizaos/agent/security/access";
22
+ import { hasOwnerAccess } from "@elizaos/agent/security";
23
23
  import { DEFAULT_AUTOFILL_WHITELIST, extractRegistrableDomain, isUrlWhitelisted, normalizeAutofillDomain, } from "../lifeops/autofill-whitelist.js";
24
+ import { requireFeatureEnabled } from "../lifeops/feature-flags.js";
25
+ import { FeatureNotEnabledError } from "../lifeops/feature-flags.types.js";
24
26
  const FIELD_PURPOSES = ["email", "password", "name", "phone", "custom"];
25
27
  const WHITELIST_CACHE_KEY = "eliza:lifeops-autofill-whitelist";
26
28
  const DEVICE_BUS_URL_ENV = "MILADY_DEVICE_BUS_URL";
@@ -40,8 +42,9 @@ async function loadUserDomains(runtime) {
40
42
  return cached.filter((v) => typeof v === "string");
41
43
  }
42
44
  async function saveUserDomains(runtime, domains) {
43
- if (!hasRuntimeCache(runtime))
44
- return;
45
+ if (!hasRuntimeCache(runtime)) {
46
+ throw new Error("AUTOFILL_WHITELIST_CACHE_UNAVAILABLE");
47
+ }
45
48
  await runtime.setCache(WHITELIST_CACHE_KEY, domains);
46
49
  }
47
50
  async function effectiveWhitelist(runtime) {
@@ -128,6 +131,18 @@ export const requestFieldFillAction = {
128
131
  if (!(await hasOwnerAccess(runtime, message))) {
129
132
  return failure("REQUEST_FIELD_FILL", "PERMISSION_DENIED");
130
133
  }
134
+ try {
135
+ await requireFeatureEnabled(runtime, "browser.automation");
136
+ }
137
+ catch (error) {
138
+ if (error instanceof FeatureNotEnabledError) {
139
+ return failure("REQUEST_FIELD_FILL", error.code, {
140
+ featureKey: error.featureKey,
141
+ message: error.message,
142
+ });
143
+ }
144
+ throw error;
145
+ }
131
146
  const params = options?.parameters ?? {};
132
147
  const tabUrl = (params.tabUrl ?? "").toString().trim();
133
148
  if (!tabUrl)
@@ -308,7 +323,17 @@ export const addAutofillWhitelistAction = {
308
323
  };
309
324
  }
310
325
  const next = [...existingNormalized, normalized];
311
- await saveUserDomains(runtime, next);
326
+ try {
327
+ await saveUserDomains(runtime, next);
328
+ }
329
+ catch (error) {
330
+ const detail = error instanceof Error ? error.message : String(error);
331
+ logger.warn({ action: "ADD_AUTOFILL_WHITELIST", domain: normalized, detail }, `[ADD_AUTOFILL_WHITELIST] failed to persist ${normalized}: ${detail}`);
332
+ return failure("ADD_AUTOFILL_WHITELIST", "PERSISTENCE_UNAVAILABLE", {
333
+ domain: normalized,
334
+ detail,
335
+ });
336
+ }
312
337
  logger.info({ action: "ADD_AUTOFILL_WHITELIST", domain: normalized }, `[ADD_AUTOFILL_WHITELIST] added ${normalized} to user whitelist`);
313
338
  return {
314
339
  text: `Added ${normalized} to the autofill whitelist.`,
@@ -0,0 +1,10 @@
1
+ import type { Action, ActionResult, HandlerCallback, IAgentRuntime } from "@elizaos/core";
2
+ import type { ApprovalQueue, ApprovalRequest } from "../lifeops/approval-queue.types.js";
3
+ export declare function executeApprovedBookTravel(args: {
4
+ runtime: IAgentRuntime;
5
+ queue: ApprovalQueue;
6
+ request: ApprovalRequest;
7
+ callback?: HandlerCallback;
8
+ }): Promise<ActionResult>;
9
+ export declare const bookTravelAction: Action;
10
+ //# sourceMappingURL=book-travel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"book-travel.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/book-travel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAEN,YAAY,EACZ,eAAe,EAEf,aAAa,EAGd,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAChB,MAAM,oCAAoC,CAAC;AA8Q5C,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,GAAG,OAAO,CAAC,YAAY,CAAC,CAgExB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAsT9B,CAAC"}