@elizaos/agent 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.
- package/apps/app-companion/src/actions/emote.js +1 -1
- package/apps/app-elizamaker/src/twitter-verify.js +1 -1
- package/apps/app-lifeops/src/action.js +1 -1
- package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/app-blocker.js +11 -5
- package/apps/app-lifeops/src/actions/approval.d.ts +21 -0
- package/apps/app-lifeops/src/actions/approval.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/approval.js +340 -0
- package/apps/app-lifeops/src/actions/autofill.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/autofill.js +29 -4
- package/apps/app-lifeops/src/actions/book-travel.d.ts +10 -0
- package/apps/app-lifeops/src/actions/book-travel.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/book-travel.js +539 -0
- package/apps/app-lifeops/src/actions/calendar.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/calendar.js +39 -16
- package/apps/app-lifeops/src/actions/calendly.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/calendly.js +24 -3
- package/apps/app-lifeops/src/actions/checkin.d.ts +6 -2
- package/apps/app-lifeops/src/actions/checkin.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/checkin.js +83 -6
- package/apps/app-lifeops/src/actions/computer-use.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/computer-use.js +12 -6
- package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +13 -3
- package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/cross-channel-send.js +62 -57
- package/apps/app-lifeops/src/actions/device-bus.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/device-bus.js +38 -5
- package/apps/app-lifeops/src/actions/dossier.js +1 -1
- package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts +5 -0
- package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/email-unsubscribe.js +172 -0
- package/apps/app-lifeops/src/actions/feature-toggle.d.ts +3 -0
- package/apps/app-lifeops/src/actions/feature-toggle.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/feature-toggle.js +200 -0
- package/apps/app-lifeops/src/actions/gmail.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/gmail.js +289 -173
- package/apps/app-lifeops/src/actions/health.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/health.js +17 -2
- package/apps/app-lifeops/src/actions/inbox.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/inbox.js +168 -72
- package/apps/app-lifeops/src/actions/intent-sync.d.ts +3 -1
- package/apps/app-lifeops/src/actions/intent-sync.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/intent-sync.js +38 -24
- package/apps/app-lifeops/src/actions/life-goal-extractor.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life-goal-extractor.js +69 -3
- package/apps/app-lifeops/src/actions/life-param-extractor.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life-param-extractor.js +2 -0
- package/apps/app-lifeops/src/actions/life-recent-context.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life-recent-context.js +14 -20
- package/apps/app-lifeops/src/actions/life.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life.extractor.js +6 -11
- package/apps/app-lifeops/src/actions/life.js +29 -62
- package/apps/app-lifeops/src/actions/lifeops-google-helpers.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/lifeops-google-helpers.js +19 -1
- package/apps/app-lifeops/src/actions/list-remote-sessions.js +1 -1
- package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +14 -0
- package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/non-actionable-request.js +25 -0
- package/apps/app-lifeops/src/actions/owner-app-block.d.ts +12 -0
- package/apps/app-lifeops/src/actions/owner-app-block.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-app-block.js +136 -0
- package/apps/app-lifeops/src/actions/owner-calendar.d.ts +14 -0
- package/apps/app-lifeops/src/actions/owner-calendar.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-calendar.js +679 -0
- package/apps/app-lifeops/src/actions/owner-inbox.d.ts +5 -0
- package/apps/app-lifeops/src/actions/owner-inbox.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-inbox.js +646 -0
- package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts +12 -0
- package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-remote-desktop.js +163 -0
- package/apps/app-lifeops/src/actions/owner-schedule.d.ts +3 -0
- package/apps/app-lifeops/src/actions/owner-schedule.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-schedule.js +160 -0
- package/apps/app-lifeops/src/actions/owner-screen-time.d.ts +10 -0
- package/apps/app-lifeops/src/actions/owner-screen-time.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-screen-time.js +194 -0
- package/apps/app-lifeops/src/actions/owner-website-block.d.ts +12 -0
- package/apps/app-lifeops/src/actions/owner-website-block.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/owner-website-block.js +391 -0
- package/apps/app-lifeops/src/actions/password-manager.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/password-manager.js +8 -3
- package/apps/app-lifeops/src/actions/relationships.d.ts +2 -1
- package/apps/app-lifeops/src/actions/relationships.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/relationships.js +227 -24
- package/apps/app-lifeops/src/actions/remote-desktop.js +3 -3
- package/apps/app-lifeops/src/actions/revoke-remote-session.js +1 -1
- package/apps/app-lifeops/src/actions/scheduling.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/scheduling.js +47 -22
- package/apps/app-lifeops/src/actions/search-across-channels.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/search-across-channels.js +16 -15
- package/apps/app-lifeops/src/actions/start-remote-session.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/start-remote-session.js +4 -3
- package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/subscriptions.js +11 -0
- package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/twilio-call.js +13 -9
- package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/update-owner-profile.js +35 -6
- package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/website-blocker.js +21 -10
- package/apps/app-lifeops/src/actions/x-read.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/x-read.js +16 -5
- package/apps/app-lifeops/src/activity-profile/activity-tracker-reporting.d.ts +7 -0
- package/apps/app-lifeops/src/activity-profile/activity-tracker-reporting.d.ts.map +1 -1
- package/apps/app-lifeops/src/activity-profile/activity-tracker-reporting.js +17 -5
- package/apps/app-lifeops/src/activity-profile/analyzer.d.ts.map +1 -1
- package/apps/app-lifeops/src/activity-profile/analyzer.js +19 -3
- package/apps/app-lifeops/src/activity-profile/proactive-planner.d.ts.map +1 -1
- package/apps/app-lifeops/src/activity-profile/proactive-planner.js +40 -6
- package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts +1 -1
- package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts.map +1 -1
- package/apps/app-lifeops/src/activity-profile/proactive-worker.js +35 -5
- package/apps/app-lifeops/src/activity-profile/service.d.ts.map +1 -1
- package/apps/app-lifeops/src/activity-profile/service.js +18 -1
- package/apps/app-lifeops/src/dossier/action.js +1 -1
- package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +1 -1
- package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +1 -1
- package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +1 -1
- package/apps/app-lifeops/src/followup/followup-tracker.d.ts +4 -0
- package/apps/app-lifeops/src/followup/followup-tracker.d.ts.map +1 -1
- package/apps/app-lifeops/src/followup/followup-tracker.js +32 -4
- package/apps/app-lifeops/src/followup/index.d.ts +1 -1
- package/apps/app-lifeops/src/followup/index.d.ts.map +1 -1
- package/apps/app-lifeops/src/followup/index.js +1 -1
- package/apps/app-lifeops/src/inbox/types.d.ts +1 -0
- package/apps/app-lifeops/src/inbox/types.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/app-state.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/app-state.js +2 -1
- package/apps/app-lifeops/src/lifeops/approval-queue.d.ts +24 -0
- package/apps/app-lifeops/src/lifeops/approval-queue.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/approval-queue.js +271 -0
- package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts +32 -1
- package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts +2 -1
- package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/background-planner-dispatch.js +6 -1
- package/apps/app-lifeops/src/lifeops/background-planner.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/background-planner.js +45 -0
- package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.d.ts +57 -0
- package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/browser-session-lifecycle.js +267 -0
- package/apps/app-lifeops/src/lifeops/calendly-client.d.ts +1 -1
- package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/calendly-client.js +17 -3
- package/apps/app-lifeops/src/lifeops/checkin/checkin-service.d.ts +4 -1
- package/apps/app-lifeops/src/lifeops/checkin/checkin-service.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/checkin/checkin-service.js +46 -26
- package/apps/app-lifeops/src/lifeops/checkin/types.d.ts +6 -0
- package/apps/app-lifeops/src/lifeops/checkin/types.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.d.ts +64 -0
- package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/email-unsubscribe-gmail.js +270 -0
- package/apps/app-lifeops/src/lifeops/email-unsubscribe-types.d.ts +67 -0
- package/apps/app-lifeops/src/lifeops/email-unsubscribe-types.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/email-unsubscribe-types.js +1 -0
- package/apps/app-lifeops/src/lifeops/engine.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/engine.js +9 -11
- package/apps/app-lifeops/src/lifeops/feature-flags.d.ts +20 -0
- package/apps/app-lifeops/src/lifeops/feature-flags.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/feature-flags.js +237 -0
- package/apps/app-lifeops/src/lifeops/feature-flags.types.d.ts +119 -0
- package/apps/app-lifeops/src/lifeops/feature-flags.types.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/feature-flags.types.js +165 -0
- package/apps/app-lifeops/src/lifeops/goal-grounding.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/goal-grounding.js +1 -6
- package/apps/app-lifeops/src/lifeops/goal-semantic-evaluator.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/goal-semantic-evaluator.js +8 -2
- package/apps/app-lifeops/src/lifeops/google-scopes.d.ts +2 -0
- package/apps/app-lifeops/src/lifeops/google-scopes.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/google-scopes.js +11 -0
- package/apps/app-lifeops/src/lifeops/health-bridge.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/health-bridge.js +2 -3
- package/apps/app-lifeops/src/lifeops/intent-sync.d.ts +11 -8
- package/apps/app-lifeops/src/lifeops/intent-sync.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/intent-sync.js +123 -8
- package/apps/app-lifeops/src/lifeops/notifications-push.d.ts +1 -1
- package/apps/app-lifeops/src/lifeops/notifications-push.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/notifications-push.js +4 -2
- package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +1 -0
- package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +3 -1
- package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts +1 -0
- package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/remote-desktop.js +1 -0
- package/apps/app-lifeops/src/lifeops/repository.d.ts +37 -4
- package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/repository.js +401 -683
- package/apps/app-lifeops/src/lifeops/runtime.d.ts +4 -0
- package/apps/app-lifeops/src/lifeops/runtime.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/runtime.js +43 -29
- package/apps/app-lifeops/src/lifeops/schedule-insight.d.ts +63 -0
- package/apps/app-lifeops/src/lifeops/schedule-insight.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/schedule-insight.js +589 -0
- package/apps/app-lifeops/src/lifeops/schedule-state.d.ts +39 -0
- package/apps/app-lifeops/src/lifeops/schedule-state.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/schedule-state.js +625 -0
- package/apps/app-lifeops/src/lifeops/schedule-sync-client.d.ts +35 -0
- package/apps/app-lifeops/src/lifeops/schedule-sync-client.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/schedule-sync-client.js +184 -0
- package/apps/app-lifeops/src/lifeops/schedule-sync-contracts.d.ts +86 -0
- package/apps/app-lifeops/src/lifeops/schedule-sync-contracts.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/schedule-sync-contracts.js +22 -0
- package/apps/app-lifeops/src/lifeops/schema.d.ts +2403 -590
- package/apps/app-lifeops/src/lifeops/schema.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/schema.js +87 -1
- package/apps/app-lifeops/src/lifeops/service-helpers-browser.d.ts +10 -1
- package/apps/app-lifeops/src/lifeops/service-helpers-browser.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service-helpers-browser.js +11 -2
- package/apps/app-lifeops/src/lifeops/service-mixin-browser.js +117 -40
- package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts +2 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service-mixin-core.js +4 -1
- package/apps/app-lifeops/src/lifeops/service-mixin-discord.js +1 -6
- package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.d.ts +2 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-email-unsubscribe.js +320 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-goals.js +15 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-reminders.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service-mixin-reminders.js +330 -23
- package/apps/app-lifeops/src/lifeops/service-mixin-scheduling.js +168 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-screentime.js +174 -29
- package/apps/app-lifeops/src/lifeops/service-mixin-signal.js +39 -22
- package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +32 -3
- package/apps/app-lifeops/src/lifeops/service-mixin-travel.d.ts +33 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-travel.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-travel.js +274 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-whatsapp.js +24 -1
- package/apps/app-lifeops/src/lifeops/service-mixin-workflows.js +1 -1
- package/apps/app-lifeops/src/lifeops/service-mixin-x-read.js +58 -4
- package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts +1 -0
- package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service-normalize-calendar.js +11 -0
- package/apps/app-lifeops/src/lifeops/service-normalize-connector.js +1 -1
- package/apps/app-lifeops/src/lifeops/service-types.d.ts +7 -0
- package/apps/app-lifeops/src/lifeops/service-types.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service.d.ts +191 -39
- package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service.js +3 -1
- package/apps/app-lifeops/src/lifeops/signal-auth.d.ts +4 -1
- package/apps/app-lifeops/src/lifeops/signal-auth.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/signal-auth.js +5 -3
- package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts +61 -0
- package/apps/app-lifeops/src/lifeops/signal-local-client.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/signal-local-client.js +120 -0
- package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts +13 -1
- package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.js +595 -0
- package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts +181 -0
- package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.js +397 -0
- package/apps/app-lifeops/src/lifeops/travel-booking.types.d.ts +46 -0
- package/apps/app-lifeops/src/lifeops/travel-booking.types.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/travel-booking.types.js +1 -0
- package/apps/app-lifeops/src/lifeops/twilio.js +1 -1
- package/apps/app-lifeops/src/lifeops/unified-search.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/unified-search.js +13 -1
- package/apps/app-lifeops/src/lifeops/x-poster.js +1 -1
- package/apps/app-lifeops/src/lifeops/x402-payment-handler.d.ts +85 -0
- package/apps/app-lifeops/src/lifeops/x402-payment-handler.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/x402-payment-handler.js +142 -0
- package/apps/app-lifeops/src/plugin.d.ts +4 -5
- package/apps/app-lifeops/src/plugin.d.ts.map +1 -1
- package/apps/app-lifeops/src/plugin.js +55 -70
- package/apps/app-lifeops/src/provider.js +1 -1
- package/apps/app-lifeops/src/providers/activity-profile.js +1 -1
- package/apps/app-lifeops/src/providers/cross-channel-context.js +1 -1
- package/apps/app-lifeops/src/providers/inbox-triage.js +3 -3
- package/apps/app-lifeops/src/providers/lifeops.d.ts.map +1 -1
- package/apps/app-lifeops/src/providers/lifeops.js +19 -17
- package/apps/app-lifeops/src/providers/website-blocker.js +1 -1
- package/apps/app-lifeops/src/routes/lifeops-browser-packaging.d.ts +12 -1
- package/apps/app-lifeops/src/routes/lifeops-browser-packaging.d.ts.map +1 -1
- package/apps/app-lifeops/src/routes/lifeops-browser-packaging.js +91 -3
- package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
- package/apps/app-lifeops/src/routes/lifeops-routes.js +196 -10
- package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
- package/apps/app-lifeops/src/routes/plugin.js +20 -3
- package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts.map +1 -1
- package/apps/app-lifeops/src/routes/website-blocker-routes.js +3 -2
- package/apps/app-lifeops/src/travel-time/action.js +1 -1
- package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +1 -1
- package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +22 -3
- package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.d.ts.map +1 -1
- package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.js +35 -9
- package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.d.ts.map +1 -1
- package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.js +40 -90
- package/apps/app-lifeops/src/website-blocker/engine.d.ts +6 -0
- package/apps/app-lifeops/src/website-blocker/engine.d.ts.map +1 -1
- package/apps/app-lifeops/src/website-blocker/engine.js +209 -6
- package/apps/app-steward/src/api/tx-service.js +1 -1
- package/apps/app-steward/src/api/wallet-routes.js +1 -1
- package/package.json +5 -5
- package/packages/agent/src/actions/agent-inbox.d.ts +14 -0
- package/packages/agent/src/actions/agent-inbox.d.ts.map +1 -0
- package/packages/agent/src/actions/agent-inbox.js +124 -0
- package/packages/agent/src/actions/connector-resolver.d.ts +1 -1
- package/packages/agent/src/actions/connector-resolver.d.ts.map +1 -1
- package/packages/agent/src/actions/connector-resolver.js +5 -4
- package/packages/agent/src/actions/entity-actions.d.ts.map +1 -1
- package/packages/agent/src/actions/entity-actions.js +6 -5
- package/packages/agent/src/actions/grounded-action-reply.d.ts +1 -1
- package/packages/agent/src/actions/grounded-action-reply.d.ts.map +1 -1
- package/packages/agent/src/actions/grounded-action-reply.js +3 -23
- package/packages/agent/src/actions/index.d.ts +3 -0
- package/packages/agent/src/actions/index.d.ts.map +1 -1
- package/packages/agent/src/actions/index.js +3 -0
- package/packages/agent/src/actions/read-messages.js +2 -2
- package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -1
- package/packages/agent/src/actions/recent-conversation-texts.js +6 -11
- package/packages/agent/src/actions/send-message.d.ts.map +1 -1
- package/packages/agent/src/actions/send-message.js +11 -6
- package/packages/agent/src/actions/set-user-name.d.ts.map +1 -1
- package/packages/agent/src/actions/set-user-name.js +4 -9
- package/packages/agent/src/api/chat-routes.d.ts +1 -0
- package/packages/agent/src/api/chat-routes.d.ts.map +1 -1
- package/packages/agent/src/api/chat-routes.js +7 -20
- package/packages/agent/src/api/client-chat-admin.d.ts +19 -0
- package/packages/agent/src/api/client-chat-admin.d.ts.map +1 -0
- package/packages/agent/src/api/client-chat-admin.js +27 -0
- package/packages/agent/src/api/cloud-features-routes.d.ts +29 -0
- package/packages/agent/src/api/cloud-features-routes.d.ts.map +1 -0
- package/packages/agent/src/api/cloud-features-routes.js +190 -0
- package/packages/agent/src/api/compat-utils.d.ts.map +1 -1
- package/packages/agent/src/api/compat-utils.js +1 -5
- package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -1
- package/packages/agent/src/api/conversation-metadata.js +2 -13
- package/packages/agent/src/api/conversation-routes.d.ts +1 -0
- package/packages/agent/src/api/conversation-routes.d.ts.map +1 -1
- package/packages/agent/src/api/conversation-routes.js +16 -23
- package/packages/agent/src/api/duffel-relay-routes.d.ts +47 -0
- package/packages/agent/src/api/duffel-relay-routes.d.ts.map +1 -0
- package/packages/agent/src/api/duffel-relay-routes.js +178 -0
- package/packages/agent/src/api/index.d.ts +1 -0
- package/packages/agent/src/api/index.d.ts.map +1 -1
- package/packages/agent/src/api/index.js +1 -0
- package/packages/agent/src/api/misc-routes.d.ts.map +1 -1
- package/packages/agent/src/api/misc-routes.js +1 -6
- package/packages/agent/src/api/onboarding-routes.d.ts.map +1 -1
- package/packages/agent/src/api/onboarding-routes.js +1 -5
- package/packages/agent/src/api/provider-switch-config.d.ts.map +1 -1
- package/packages/agent/src/api/provider-switch-config.js +2 -12
- package/packages/agent/src/api/server-helpers-config.d.ts +1 -1
- package/packages/agent/src/api/server-helpers-swarm.d.ts.map +1 -1
- package/packages/agent/src/api/server-helpers-swarm.js +2 -2
- package/packages/agent/src/api/server.d.ts.map +1 -1
- package/packages/agent/src/api/server.js +70 -31
- package/packages/agent/src/config/index.d.ts +1 -0
- package/packages/agent/src/config/index.d.ts.map +1 -1
- package/packages/agent/src/config/index.js +1 -0
- package/packages/agent/src/config/zod-schema.agent-runtime.d.ts +3 -3
- package/packages/agent/src/config/zod-schema.core.d.ts +13 -13
- package/packages/agent/src/config/zod-schema.d.ts +18 -18
- package/packages/agent/src/config/zod-schema.providers-core.d.ts +26 -26
- package/packages/agent/src/config/zod-schema.session.d.ts +1 -1
- package/packages/agent/src/index.d.ts +1 -1
- package/packages/agent/src/index.d.ts.map +1 -1
- package/packages/agent/src/index.js +1 -1
- package/packages/agent/src/providers/conversation-utils.d.ts.map +1 -1
- package/packages/agent/src/providers/conversation-utils.js +2 -11
- package/packages/agent/src/providers/rolodex.d.ts.map +1 -1
- package/packages/agent/src/providers/rolodex.js +2 -1
- package/packages/agent/src/providers/skill-provider.d.ts.map +1 -1
- package/packages/agent/src/providers/skill-provider.js +8 -13
- package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
- package/packages/agent/src/runtime/eliza-plugin.js +4 -1
- package/packages/agent/src/runtime/index.d.ts +1 -0
- package/packages/agent/src/runtime/index.d.ts.map +1 -1
- package/packages/agent/src/runtime/index.js +1 -0
- package/packages/agent/src/runtime/plugin-role-gating.d.ts.map +1 -1
- package/packages/agent/src/runtime/plugin-role-gating.js +1 -0
- package/packages/agent/src/runtime/roles/src/action.d.ts.map +1 -1
- package/packages/agent/src/runtime/roles/src/action.js +23 -35
- package/packages/agent/src/runtime/roles/src/intent.d.ts.map +1 -1
- package/packages/agent/src/runtime/roles/src/intent.js +6 -11
- package/packages/agent/src/runtime/trajectory-internals.d.ts +2 -1
- package/packages/agent/src/runtime/trajectory-internals.d.ts.map +1 -1
- package/packages/agent/src/runtime/trajectory-internals.js +2 -8
- package/packages/agent/src/services/coding-agent-context.d.ts +3 -3
- package/packages/agent/src/services/relationships-graph.d.ts +9 -0
- package/packages/agent/src/services/relationships-graph.d.ts.map +1 -1
- package/packages/agent/src/services/relationships-graph.js +28 -8
- package/packages/app-core/src/navigation/index.d.ts.map +1 -1
- package/packages/app-core/src/navigation/index.js +4 -0
- package/packages/shared/src/contracts/lifeops-extensions.d.ts +2 -0
- package/packages/shared/src/contracts/lifeops-extensions.d.ts.map +1 -1
- package/packages/shared/src/contracts/lifeops.d.ts +94 -2
- package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
- package/packages/shared/src/contracts/lifeops.js +22 -0
- package/packages/shared/src/contracts/service-routing.d.ts.map +1 -1
- package/packages/shared/src/contracts/service-routing.js +1 -5
- package/packages/shared/src/index.d.ts +2 -0
- package/packages/shared/src/index.d.ts.map +1 -1
- package/packages/shared/src/index.js +2 -0
- package/packages/shared/src/recent-messages-state.d.ts +10 -0
- package/packages/shared/src/recent-messages-state.d.ts.map +1 -0
- package/packages/shared/src/recent-messages-state.js +11 -0
- package/packages/shared/src/type-guards.d.ts +29 -0
- package/packages/shared/src/type-guards.d.ts.map +1 -0
- package/packages/shared/src/type-guards.js +43 -0
- package/packages/typescript/src/actions.d.ts.map +1 -1
- package/packages/typescript/src/actions.js +11 -0
- package/packages/typescript/src/database/inMemoryAdapter.d.ts.map +1 -1
- package/packages/typescript/src/database/inMemoryAdapter.js +14 -2
- package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.d.ts.map +1 -1
- package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.js +2 -1
- package/packages/typescript/src/features/advanced-capabilities/actions/settings.js +2 -2
- package/packages/typescript/src/features/advanced-capabilities/evaluators/reflection.d.ts.map +1 -1
- package/packages/typescript/src/features/advanced-capabilities/evaluators/reflection.js +49 -5
- package/packages/typescript/src/features/basic-capabilities/providers/actions.js +2 -2
- package/packages/typescript/src/features/knowledge/types.d.ts +1 -1
- package/packages/typescript/src/features/plugin-manager/providers/relevance.d.ts.map +1 -1
- package/packages/typescript/src/features/plugin-manager/providers/relevance.js +12 -7
- package/packages/typescript/src/prompts.d.ts +4 -4
- package/packages/typescript/src/prompts.d.ts.map +1 -1
- package/packages/typescript/src/prompts.js +2 -0
- package/packages/typescript/src/runtime.d.ts.map +1 -1
- package/packages/typescript/src/runtime.js +27 -4
- package/packages/typescript/src/services/message.d.ts +4 -1
- package/packages/typescript/src/services/message.d.ts.map +1 -1
- package/packages/typescript/src/services/message.js +602 -193
- package/packages/typescript/src/services/relationships.d.ts.map +1 -1
- package/packages/typescript/src/services/relationships.js +34 -0
- package/packages/typescript/src/services/task.d.ts.map +1 -1
- package/packages/typescript/src/services/task.js +14 -7
- package/packages/typescript/src/utils/context-catalog.d.ts.map +1 -1
- package/packages/typescript/src/utils/context-catalog.js +7 -0
- package/packages/agent/src/runtime/task-heartbeat.d.ts +0 -22
- package/packages/agent/src/runtime/task-heartbeat.d.ts.map +0 -1
- 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
|
|
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
|
|
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
|
|
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;
|
|
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:
|
|
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
|
-
|
|
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;
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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"}
|