@elizaos/plugin-personal-assistant 2.0.3-beta.5 → 2.0.3-beta.7
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/dist/actions/app-block.d.ts +15 -0
- package/dist/actions/app-block.d.ts.map +1 -0
- package/dist/actions/app-block.js +349 -0
- package/dist/actions/app-block.js.map +1 -0
- package/dist/actions/autofill.d.ts +20 -0
- package/dist/actions/autofill.d.ts.map +1 -0
- package/dist/actions/autofill.js +370 -0
- package/dist/actions/autofill.js.map +1 -0
- package/dist/actions/block.d.ts +30 -0
- package/dist/actions/block.d.ts.map +1 -0
- package/dist/actions/block.js +326 -0
- package/dist/actions/block.js.map +1 -0
- package/dist/actions/book-travel.d.ts +10 -0
- package/dist/actions/book-travel.d.ts.map +1 -0
- package/dist/actions/book-travel.js +467 -0
- package/dist/actions/book-travel.js.map +1 -0
- package/dist/actions/brief.d.ts +60 -0
- package/dist/actions/brief.d.ts.map +1 -0
- package/dist/actions/brief.js +485 -0
- package/dist/actions/brief.js.map +1 -0
- package/dist/actions/calendar.d.ts +22 -0
- package/dist/actions/calendar.d.ts.map +1 -0
- package/dist/actions/calendar.js +832 -0
- package/dist/actions/calendar.js.map +1 -0
- package/dist/actions/conflict-detect.d.ts +67 -0
- package/dist/actions/conflict-detect.d.ts.map +1 -0
- package/dist/actions/conflict-detect.js +310 -0
- package/dist/actions/conflict-detect.js.map +1 -0
- package/dist/actions/connector.d.ts +5 -0
- package/dist/actions/connector.d.ts.map +1 -0
- package/dist/actions/connector.js +1354 -0
- package/dist/actions/connector.js.map +1 -0
- package/dist/actions/credentials.d.ts +14 -0
- package/dist/actions/credentials.d.ts.map +1 -0
- package/dist/actions/credentials.js +191 -0
- package/dist/actions/credentials.js.map +1 -0
- package/dist/actions/document.d.ts +36 -0
- package/dist/actions/document.d.ts.map +1 -0
- package/dist/actions/document.js +613 -0
- package/dist/actions/document.js.map +1 -0
- package/dist/actions/entity.d.ts +20 -0
- package/dist/actions/entity.d.ts.map +1 -0
- package/dist/actions/entity.js +785 -0
- package/dist/actions/entity.js.map +1 -0
- package/dist/actions/health.d.ts +4 -0
- package/dist/actions/health.d.ts.map +1 -0
- package/dist/actions/health.js +37 -0
- package/dist/actions/health.js.map +1 -0
- package/dist/actions/inbox.d.ts +12 -0
- package/dist/actions/inbox.d.ts.map +1 -0
- package/dist/actions/inbox.js +13 -0
- package/dist/actions/inbox.js.map +1 -0
- package/dist/actions/lib/calendly-handler.d.ts +3 -0
- package/dist/actions/lib/calendly-handler.d.ts.map +1 -0
- package/dist/actions/lib/calendly-handler.js +506 -0
- package/dist/actions/lib/calendly-handler.js.map +1 -0
- package/dist/actions/lib/extract-goal-plan.d.ts +69 -0
- package/dist/actions/lib/extract-goal-plan.d.ts.map +1 -0
- package/dist/actions/lib/extract-goal-plan.js +488 -0
- package/dist/actions/lib/extract-goal-plan.js.map +1 -0
- package/dist/actions/lib/extract-life-operation.d.ts +18 -0
- package/dist/actions/lib/extract-life-operation.d.ts.map +1 -0
- package/dist/actions/lib/extract-life-operation.js +318 -0
- package/dist/actions/lib/extract-life-operation.js.map +1 -0
- package/dist/actions/lib/extract-task-plan.d.ts +78 -0
- package/dist/actions/lib/extract-task-plan.d.ts.map +1 -0
- package/dist/actions/lib/extract-task-plan.js +355 -0
- package/dist/actions/lib/extract-task-plan.js.map +1 -0
- package/dist/actions/lib/extract-update-fields.d.ts +27 -0
- package/dist/actions/lib/extract-update-fields.d.ts.map +1 -0
- package/dist/actions/lib/extract-update-fields.js +172 -0
- package/dist/actions/lib/extract-update-fields.js.map +1 -0
- package/dist/actions/lib/lifeops-deferred-draft.d.ts +68 -0
- package/dist/actions/lib/lifeops-deferred-draft.d.ts.map +1 -0
- package/dist/actions/lib/lifeops-deferred-draft.js +315 -0
- package/dist/actions/lib/lifeops-deferred-draft.js.map +1 -0
- package/dist/actions/lib/messaging-helpers.d.ts +20 -0
- package/dist/actions/lib/messaging-helpers.d.ts.map +1 -0
- package/dist/actions/lib/messaging-helpers.js +103 -0
- package/dist/actions/lib/messaging-helpers.js.map +1 -0
- package/dist/actions/lib/owner-policy-writes.d.ts +49 -0
- package/dist/actions/lib/owner-policy-writes.d.ts.map +1 -0
- package/dist/actions/lib/owner-policy-writes.js +157 -0
- package/dist/actions/lib/owner-policy-writes.js.map +1 -0
- package/dist/actions/lib/prompt-format.d.ts +3 -0
- package/dist/actions/lib/prompt-format.d.ts.map +1 -0
- package/dist/actions/lib/prompt-format.js +42 -0
- package/dist/actions/lib/prompt-format.js.map +1 -0
- package/dist/actions/lib/scheduling-handler.d.ts +93 -0
- package/dist/actions/lib/scheduling-handler.d.ts.map +1 -0
- package/dist/actions/lib/scheduling-handler.js +868 -0
- package/dist/actions/lib/scheduling-handler.js.map +1 -0
- package/dist/actions/life.d.ts +13 -0
- package/dist/actions/life.d.ts.map +1 -0
- package/dist/actions/life.js +2524 -0
- package/dist/actions/life.js.map +1 -0
- package/dist/actions/money.d.ts +24 -0
- package/dist/actions/money.d.ts.map +1 -0
- package/dist/actions/money.js +41 -0
- package/dist/actions/money.js.map +1 -0
- package/dist/actions/owner-surfaces.d.ts +11 -0
- package/dist/actions/owner-surfaces.d.ts.map +1 -0
- package/dist/actions/owner-surfaces.js +493 -0
- package/dist/actions/owner-surfaces.js.map +1 -0
- package/dist/actions/password-manager.d.ts +10 -0
- package/dist/actions/password-manager.d.ts.map +1 -0
- package/dist/actions/password-manager.js +195 -0
- package/dist/actions/password-manager.js.map +1 -0
- package/dist/actions/payments.d.ts +10 -0
- package/dist/actions/payments.d.ts.map +1 -0
- package/dist/actions/payments.js +5 -0
- package/dist/actions/payments.js.map +1 -0
- package/dist/actions/prioritize.d.ts +49 -0
- package/dist/actions/prioritize.d.ts.map +1 -0
- package/dist/actions/prioritize.js +313 -0
- package/dist/actions/prioritize.js.map +1 -0
- package/dist/actions/remote-desktop.d.ts +13 -0
- package/dist/actions/remote-desktop.d.ts.map +1 -0
- package/dist/actions/remote-desktop.js +11 -0
- package/dist/actions/remote-desktop.js.map +1 -0
- package/dist/actions/resolve-request.d.ts +12 -0
- package/dist/actions/resolve-request.d.ts.map +1 -0
- package/dist/actions/resolve-request.js +427 -0
- package/dist/actions/resolve-request.js.map +1 -0
- package/dist/actions/schedule.d.ts +10 -0
- package/dist/actions/schedule.d.ts.map +1 -0
- package/dist/actions/schedule.js +113 -0
- package/dist/actions/schedule.js.map +1 -0
- package/dist/actions/scheduled-task.d.ts +32 -0
- package/dist/actions/scheduled-task.d.ts.map +1 -0
- package/dist/actions/scheduled-task.js +661 -0
- package/dist/actions/scheduled-task.js.map +1 -0
- package/dist/actions/screen-time.d.ts +4 -0
- package/dist/actions/screen-time.d.ts.map +1 -0
- package/dist/actions/screen-time.js +47 -0
- package/dist/actions/screen-time.js.map +1 -0
- package/dist/actions/subscriptions.d.ts +8 -0
- package/dist/actions/subscriptions.d.ts.map +1 -0
- package/dist/actions/subscriptions.js +327 -0
- package/dist/actions/subscriptions.js.map +1 -0
- package/dist/actions/voice-call.d.ts +16 -0
- package/dist/actions/voice-call.d.ts.map +1 -0
- package/dist/actions/voice-call.js +756 -0
- package/dist/actions/voice-call.js.map +1 -0
- package/dist/actions/website-block.d.ts +15 -0
- package/dist/actions/website-block.d.ts.map +1 -0
- package/dist/actions/website-block.js +719 -0
- package/dist/actions/website-block.js.map +1 -0
- package/dist/actions/work-thread.d.ts +5 -0
- package/dist/actions/work-thread.d.ts.map +1 -0
- package/dist/actions/work-thread.js +556 -0
- package/dist/actions/work-thread.js.map +1 -0
- package/dist/activity-profile/activity-tracker-repo.d.ts +28 -0
- package/dist/activity-profile/activity-tracker-repo.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-repo.js +61 -0
- package/dist/activity-profile/activity-tracker-repo.js.map +1 -0
- package/dist/activity-profile/activity-tracker-reporting.d.ts +52 -0
- package/dist/activity-profile/activity-tracker-reporting.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-reporting.js +119 -0
- package/dist/activity-profile/activity-tracker-reporting.js.map +1 -0
- package/dist/activity-profile/activity-tracker-service.d.ts +36 -0
- package/dist/activity-profile/activity-tracker-service.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-service.js +187 -0
- package/dist/activity-profile/activity-tracker-service.js.map +1 -0
- package/dist/activity-profile/analyzer.d.ts +23 -0
- package/dist/activity-profile/analyzer.d.ts.map +1 -0
- package/dist/activity-profile/analyzer.js +485 -0
- package/dist/activity-profile/analyzer.js.map +1 -0
- package/dist/activity-profile/presence-signal-bridge-service.d.ts +14 -0
- package/dist/activity-profile/presence-signal-bridge-service.d.ts.map +1 -0
- package/dist/activity-profile/presence-signal-bridge-service.js +159 -0
- package/dist/activity-profile/presence-signal-bridge-service.js.map +1 -0
- package/dist/activity-profile/proactive-inbox-digest.d.ts +3 -0
- package/dist/activity-profile/proactive-inbox-digest.d.ts.map +1 -0
- package/dist/activity-profile/proactive-inbox-digest.js +21 -0
- package/dist/activity-profile/proactive-inbox-digest.js.map +1 -0
- package/dist/activity-profile/proactive-planner.d.ts +150 -0
- package/dist/activity-profile/proactive-planner.d.ts.map +1 -0
- package/dist/activity-profile/proactive-planner.js +529 -0
- package/dist/activity-profile/proactive-planner.js.map +1 -0
- package/dist/activity-profile/proactive-worker.d.ts +33 -0
- package/dist/activity-profile/proactive-worker.d.ts.map +1 -0
- package/dist/activity-profile/proactive-worker.js +779 -0
- package/dist/activity-profile/proactive-worker.js.map +1 -0
- package/dist/activity-profile/profile-metadata.d.ts +10 -0
- package/dist/activity-profile/profile-metadata.d.ts.map +1 -0
- package/dist/activity-profile/profile-metadata.js +16 -0
- package/dist/activity-profile/profile-metadata.js.map +1 -0
- package/dist/activity-profile/redactor.d.ts +15 -0
- package/dist/activity-profile/redactor.d.ts.map +1 -0
- package/dist/activity-profile/redactor.js +22 -0
- package/dist/activity-profile/redactor.js.map +1 -0
- package/dist/activity-profile/service.d.ts +11 -0
- package/dist/activity-profile/service.d.ts.map +1 -0
- package/dist/activity-profile/service.js +272 -0
- package/dist/activity-profile/service.js.map +1 -0
- package/dist/activity-profile/types.d.ts +97 -0
- package/dist/activity-profile/types.d.ts.map +1 -0
- package/dist/activity-profile/types.js +36 -0
- package/dist/activity-profile/types.js.map +1 -0
- package/dist/agent-lifeops.d.ts +2 -0
- package/dist/agent-lifeops.d.ts.map +1 -0
- package/dist/agent-lifeops.js +2 -0
- package/dist/agent-lifeops.js.map +1 -0
- package/dist/api/client-lifeops.d.ts +319 -0
- package/dist/api/client-lifeops.d.ts.map +1 -0
- package/dist/api/client-lifeops.js +794 -0
- package/dist/api/client-lifeops.js.map +1 -0
- package/dist/automation-node-contributor.d.ts +2 -0
- package/dist/automation-node-contributor.d.ts.map +1 -0
- package/dist/automation-node-contributor.js +184 -0
- package/dist/automation-node-contributor.js.map +1 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +18 -0
- package/dist/client.js.map +1 -0
- package/dist/components/AppBlockerSettingsCard.d.ts +3 -0
- package/dist/components/AppBlockerSettingsCard.d.ts.map +1 -0
- package/dist/components/AppBlockerSettingsCard.js +538 -0
- package/dist/components/AppBlockerSettingsCard.js.map +1 -0
- package/dist/components/WebsiteBlockerSettingsCard.d.ts +3 -0
- package/dist/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
- package/dist/components/WebsiteBlockerSettingsCard.js +148 -0
- package/dist/components/WebsiteBlockerSettingsCard.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/lifeops.d.ts +2 -0
- package/dist/contracts/lifeops.d.ts.map +1 -0
- package/dist/contracts/lifeops.js +2 -0
- package/dist/contracts/lifeops.js.map +1 -0
- package/dist/default-packs/autofill-whitelist-pack.d.ts +17 -0
- package/dist/default-packs/autofill-whitelist-pack.d.ts.map +1 -0
- package/dist/default-packs/autofill-whitelist-pack.js +56 -0
- package/dist/default-packs/autofill-whitelist-pack.js.map +1 -0
- package/dist/default-packs/consolidation-policies.d.ts +14 -0
- package/dist/default-packs/consolidation-policies.d.ts.map +1 -0
- package/dist/default-packs/consolidation-policies.js +17 -0
- package/dist/default-packs/consolidation-policies.js.map +1 -0
- package/dist/default-packs/contract-types.d.ts +200 -0
- package/dist/default-packs/contract-types.d.ts.map +1 -0
- package/dist/default-packs/contract-types.js +1 -0
- package/dist/default-packs/contract-types.js.map +1 -0
- package/dist/default-packs/daily-rhythm.d.ts +28 -0
- package/dist/default-packs/daily-rhythm.d.ts.map +1 -0
- package/dist/default-packs/daily-rhythm.js +136 -0
- package/dist/default-packs/daily-rhythm.js.map +1 -0
- package/dist/default-packs/escalation-ladders.d.ts +18 -0
- package/dist/default-packs/escalation-ladders.d.ts.map +1 -0
- package/dist/default-packs/escalation-ladders.js +17 -0
- package/dist/default-packs/escalation-ladders.js.map +1 -0
- package/dist/default-packs/executive-assistant.d.ts +50 -0
- package/dist/default-packs/executive-assistant.d.ts.map +1 -0
- package/dist/default-packs/executive-assistant.js +745 -0
- package/dist/default-packs/executive-assistant.js.map +1 -0
- package/dist/default-packs/followup-starter.d.ts +49 -0
- package/dist/default-packs/followup-starter.d.ts.map +1 -0
- package/dist/default-packs/followup-starter.js +104 -0
- package/dist/default-packs/followup-starter.js.map +1 -0
- package/dist/default-packs/habit-starters.d.ts +37 -0
- package/dist/default-packs/habit-starters.d.ts.map +1 -0
- package/dist/default-packs/habit-starters.js +255 -0
- package/dist/default-packs/habit-starters.js.map +1 -0
- package/dist/default-packs/inbox-triage-starter.d.ts +23 -0
- package/dist/default-packs/inbox-triage-starter.d.ts.map +1 -0
- package/dist/default-packs/inbox-triage-starter.js +61 -0
- package/dist/default-packs/inbox-triage-starter.js.map +1 -0
- package/dist/default-packs/index.d.ts +54 -0
- package/dist/default-packs/index.d.ts.map +1 -0
- package/dist/default-packs/index.js +150 -0
- package/dist/default-packs/index.js.map +1 -0
- package/dist/default-packs/lint.d.ts +62 -0
- package/dist/default-packs/lint.d.ts.map +1 -0
- package/dist/default-packs/lint.js +161 -0
- package/dist/default-packs/lint.js.map +1 -0
- package/dist/default-packs/morning-brief.d.ts +44 -0
- package/dist/default-packs/morning-brief.d.ts.map +1 -0
- package/dist/default-packs/morning-brief.js +69 -0
- package/dist/default-packs/morning-brief.js.map +1 -0
- package/dist/default-packs/quiet-user-watcher.d.ts +49 -0
- package/dist/default-packs/quiet-user-watcher.d.ts.map +1 -0
- package/dist/default-packs/quiet-user-watcher.js +92 -0
- package/dist/default-packs/quiet-user-watcher.js.map +1 -0
- package/dist/default-packs/registry-types.d.ts +51 -0
- package/dist/default-packs/registry-types.d.ts.map +1 -0
- package/dist/default-packs/registry-types.js +1 -0
- package/dist/default-packs/registry-types.js.map +1 -0
- package/dist/default-packs/task-definitions.d.ts +88 -0
- package/dist/default-packs/task-definitions.d.ts.map +1 -0
- package/dist/default-packs/task-definitions.js +87 -0
- package/dist/default-packs/task-definitions.js.map +1 -0
- package/dist/events/index.d.ts +34 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +30 -0
- package/dist/events/index.js.map +1 -0
- package/dist/followup/actions/listOverdueFollowups.d.ts +3 -0
- package/dist/followup/actions/listOverdueFollowups.d.ts.map +1 -0
- package/dist/followup/actions/listOverdueFollowups.js +90 -0
- package/dist/followup/actions/listOverdueFollowups.js.map +1 -0
- package/dist/followup/actions/markFollowupDone.d.ts +3 -0
- package/dist/followup/actions/markFollowupDone.d.ts.map +1 -0
- package/dist/followup/actions/markFollowupDone.js +171 -0
- package/dist/followup/actions/markFollowupDone.js.map +1 -0
- package/dist/followup/actions/setFollowupThreshold.d.ts +3 -0
- package/dist/followup/actions/setFollowupThreshold.d.ts.map +1 -0
- package/dist/followup/actions/setFollowupThreshold.js +171 -0
- package/dist/followup/actions/setFollowupThreshold.js.map +1 -0
- package/dist/followup/followup-tracker.d.ts +83 -0
- package/dist/followup/followup-tracker.d.ts.map +1 -0
- package/dist/followup/followup-tracker.js +311 -0
- package/dist/followup/followup-tracker.js.map +1 -0
- package/dist/followup/index.d.ts +5 -0
- package/dist/followup/index.d.ts.map +1 -0
- package/dist/followup/index.js +39 -0
- package/dist/followup/index.js.map +1 -0
- package/dist/hooks/connector-error.d.ts +2 -0
- package/dist/hooks/connector-error.d.ts.map +1 -0
- package/dist/hooks/connector-error.js +13 -0
- package/dist/hooks/connector-error.js.map +1 -0
- package/dist/hooks/useDiscordConnector.d.ts +11 -0
- package/dist/hooks/useDiscordConnector.d.ts.map +1 -0
- package/dist/hooks/useDiscordConnector.js +95 -0
- package/dist/hooks/useDiscordConnector.js.map +1 -0
- package/dist/hooks/useGoogleLifeOpsConnector.d.ts +23 -0
- package/dist/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
- package/dist/hooks/useGoogleLifeOpsConnector.js +630 -0
- package/dist/hooks/useGoogleLifeOpsConnector.js.map +1 -0
- package/dist/hooks/useIMessageConnector.d.ts +10 -0
- package/dist/hooks/useIMessageConnector.d.ts.map +1 -0
- package/dist/hooks/useIMessageConnector.js +57 -0
- package/dist/hooks/useIMessageConnector.js.map +1 -0
- package/dist/hooks/useInbox.d.ts +36 -0
- package/dist/hooks/useInbox.d.ts.map +1 -0
- package/dist/hooks/useInbox.js +96 -0
- package/dist/hooks/useInbox.js.map +1 -0
- package/dist/hooks/useLifeOpsActivitySignals.d.ts +2 -0
- package/dist/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsActivitySignals.js +358 -0
- package/dist/hooks/useLifeOpsActivitySignals.js.map +1 -0
- package/dist/hooks/useLifeOpsAppState.d.ts +9 -0
- package/dist/hooks/useLifeOpsAppState.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsAppState.js +79 -0
- package/dist/hooks/useLifeOpsAppState.js.map +1 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.js.map +1 -0
- package/dist/hooks/useLifeOpsXConnector.d.ts +11 -0
- package/dist/hooks/useLifeOpsXConnector.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsXConnector.js +92 -0
- package/dist/hooks/useLifeOpsXConnector.js.map +1 -0
- package/dist/hooks/useSignalConnector.d.ts +14 -0
- package/dist/hooks/useSignalConnector.d.ts.map +1 -0
- package/dist/hooks/useSignalConnector.js +89 -0
- package/dist/hooks/useSignalConnector.js.map +1 -0
- package/dist/hooks/useTelegramConnector.d.ts +14 -0
- package/dist/hooks/useTelegramConnector.d.ts.map +1 -0
- package/dist/hooks/useTelegramConnector.js +97 -0
- package/dist/hooks/useTelegramConnector.js.map +1 -0
- package/dist/hooks/useWhatsAppConnector.d.ts +8 -0
- package/dist/hooks/useWhatsAppConnector.d.ts.map +1 -0
- package/dist/hooks/useWhatsAppConnector.js +62 -0
- package/dist/hooks/useWhatsAppConnector.js.map +1 -0
- package/dist/inbox/message-fetcher.d.ts +11 -0
- package/dist/inbox/message-fetcher.d.ts.map +1 -0
- package/dist/inbox/message-fetcher.js +13 -0
- package/dist/inbox/message-fetcher.js.map +1 -0
- package/dist/inbox/repository.d.ts +11 -0
- package/dist/inbox/repository.d.ts.map +1 -0
- package/dist/inbox/repository.js +5 -0
- package/dist/inbox/repository.js.map +1 -0
- package/dist/inbox/types.d.ts +10 -0
- package/dist/inbox/types.d.ts.map +1 -0
- package/dist/inbox/types.js +2 -0
- package/dist/inbox/types.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +188 -0
- package/dist/index.js.map +1 -0
- package/dist/lifeops/access.d.ts +29 -0
- package/dist/lifeops/access.d.ts.map +1 -0
- package/dist/lifeops/access.js +56 -0
- package/dist/lifeops/access.js.map +1 -0
- package/dist/lifeops/app-state.d.ts +22 -0
- package/dist/lifeops/app-state.d.ts.map +1 -0
- package/dist/lifeops/app-state.js +67 -0
- package/dist/lifeops/app-state.js.map +1 -0
- package/dist/lifeops/apple-reminders.d.ts +67 -0
- package/dist/lifeops/apple-reminders.d.ts.map +1 -0
- package/dist/lifeops/apple-reminders.js +396 -0
- package/dist/lifeops/apple-reminders.js.map +1 -0
- package/dist/lifeops/approval-queue.d.ts +38 -0
- package/dist/lifeops/approval-queue.d.ts.map +1 -0
- package/dist/lifeops/approval-queue.js +575 -0
- package/dist/lifeops/approval-queue.js.map +1 -0
- package/dist/lifeops/approval-queue.types.d.ts +172 -0
- package/dist/lifeops/approval-queue.types.d.ts.map +1 -0
- package/dist/lifeops/approval-queue.types.js +27 -0
- package/dist/lifeops/approval-queue.types.js.map +1 -0
- package/dist/lifeops/autofill-whitelist.d.ts +20 -0
- package/dist/lifeops/autofill-whitelist.d.ts.map +1 -0
- package/dist/lifeops/autofill-whitelist.js +59 -0
- package/dist/lifeops/autofill-whitelist.js.map +1 -0
- package/dist/lifeops/background-planner-dispatch.d.ts +60 -0
- package/dist/lifeops/background-planner-dispatch.d.ts.map +1 -0
- package/dist/lifeops/background-planner-dispatch.js +113 -0
- package/dist/lifeops/background-planner-dispatch.js.map +1 -0
- package/dist/lifeops/background-planner.d.ts +140 -0
- package/dist/lifeops/background-planner.d.ts.map +1 -0
- package/dist/lifeops/background-planner.js +359 -0
- package/dist/lifeops/background-planner.js.map +1 -0
- package/dist/lifeops/bill-extraction.d.ts +46 -0
- package/dist/lifeops/bill-extraction.d.ts.map +1 -0
- package/dist/lifeops/bill-extraction.js +325 -0
- package/dist/lifeops/bill-extraction.js.map +1 -0
- package/dist/lifeops/browser-constants.d.ts +4 -0
- package/dist/lifeops/browser-constants.d.ts.map +1 -0
- package/dist/lifeops/browser-constants.js +27 -0
- package/dist/lifeops/browser-constants.js.map +1 -0
- package/dist/lifeops/browser-extension-store.d.ts +61 -0
- package/dist/lifeops/browser-extension-store.d.ts.map +1 -0
- package/dist/lifeops/browser-extension-store.js +176 -0
- package/dist/lifeops/browser-extension-store.js.map +1 -0
- package/dist/lifeops/browser-session-lifecycle.d.ts +57 -0
- package/dist/lifeops/browser-session-lifecycle.d.ts.map +1 -0
- package/dist/lifeops/browser-session-lifecycle.js +308 -0
- package/dist/lifeops/browser-session-lifecycle.js.map +1 -0
- package/dist/lifeops/bulk-review.d.ts +333 -0
- package/dist/lifeops/bulk-review.d.ts.map +1 -0
- package/dist/lifeops/bulk-review.js +1120 -0
- package/dist/lifeops/bulk-review.js.map +1 -0
- package/dist/lifeops/calendar-gate.d.ts +20 -0
- package/dist/lifeops/calendar-gate.d.ts.map +1 -0
- package/dist/lifeops/calendar-gate.js +30 -0
- package/dist/lifeops/calendar-gate.js.map +1 -0
- package/dist/lifeops/channels/contract.d.ts +47 -0
- package/dist/lifeops/channels/contract.d.ts.map +1 -0
- package/dist/lifeops/channels/contract.js +1 -0
- package/dist/lifeops/channels/contract.js.map +1 -0
- package/dist/lifeops/channels/default-pack.d.ts +26 -0
- package/dist/lifeops/channels/default-pack.d.ts.map +1 -0
- package/dist/lifeops/channels/default-pack.js +243 -0
- package/dist/lifeops/channels/default-pack.js.map +1 -0
- package/dist/lifeops/channels/index.d.ts +5 -0
- package/dist/lifeops/channels/index.d.ts.map +1 -0
- package/dist/lifeops/channels/index.js +23 -0
- package/dist/lifeops/channels/index.js.map +1 -0
- package/dist/lifeops/channels/priority-posture.d.ts +36 -0
- package/dist/lifeops/channels/priority-posture.d.ts.map +1 -0
- package/dist/lifeops/channels/priority-posture.js +27 -0
- package/dist/lifeops/channels/priority-posture.js.map +1 -0
- package/dist/lifeops/channels/registry.d.ts +7 -0
- package/dist/lifeops/channels/registry.d.ts.map +1 -0
- package/dist/lifeops/channels/registry.js +49 -0
- package/dist/lifeops/channels/registry.js.map +1 -0
- package/dist/lifeops/checkin/checkin-service.d.ts +66 -0
- package/dist/lifeops/checkin/checkin-service.d.ts.map +1 -0
- package/dist/lifeops/checkin/checkin-service.js +1084 -0
- package/dist/lifeops/checkin/checkin-service.js.map +1 -0
- package/dist/lifeops/checkin/schedule-resolver.d.ts +17 -0
- package/dist/lifeops/checkin/schedule-resolver.d.ts.map +1 -0
- package/dist/lifeops/checkin/schedule-resolver.js +26 -0
- package/dist/lifeops/checkin/schedule-resolver.js.map +1 -0
- package/dist/lifeops/checkin/types.d.ts +106 -0
- package/dist/lifeops/checkin/types.d.ts.map +1 -0
- package/dist/lifeops/checkin/types.js +1 -0
- package/dist/lifeops/checkin/types.js.map +1 -0
- package/dist/lifeops/connectors/_helpers.d.ts +51 -0
- package/dist/lifeops/connectors/_helpers.d.ts.map +1 -0
- package/dist/lifeops/connectors/_helpers.js +104 -0
- package/dist/lifeops/connectors/_helpers.js.map +1 -0
- package/dist/lifeops/connectors/calendly.d.ts +11 -0
- package/dist/lifeops/connectors/calendly.d.ts.map +1 -0
- package/dist/lifeops/connectors/calendly.js +61 -0
- package/dist/lifeops/connectors/calendly.js.map +1 -0
- package/dist/lifeops/connectors/contract.d.ts +88 -0
- package/dist/lifeops/connectors/contract.d.ts.map +1 -0
- package/dist/lifeops/connectors/contract.js +1 -0
- package/dist/lifeops/connectors/contract.js.map +1 -0
- package/dist/lifeops/connectors/default-pack.d.ts +35 -0
- package/dist/lifeops/connectors/default-pack.d.ts.map +1 -0
- package/dist/lifeops/connectors/default-pack.js +37 -0
- package/dist/lifeops/connectors/default-pack.js.map +1 -0
- package/dist/lifeops/connectors/discord.d.ts +8 -0
- package/dist/lifeops/connectors/discord.d.ts.map +1 -0
- package/dist/lifeops/connectors/discord.js +53 -0
- package/dist/lifeops/connectors/discord.js.map +1 -0
- package/dist/lifeops/connectors/dispatch-policy.d.ts +75 -0
- package/dist/lifeops/connectors/dispatch-policy.d.ts.map +1 -0
- package/dist/lifeops/connectors/dispatch-policy.js +35 -0
- package/dist/lifeops/connectors/dispatch-policy.js.map +1 -0
- package/dist/lifeops/connectors/duffel.d.ts +11 -0
- package/dist/lifeops/connectors/duffel.d.ts.map +1 -0
- package/dist/lifeops/connectors/duffel.js +74 -0
- package/dist/lifeops/connectors/duffel.js.map +1 -0
- package/dist/lifeops/connectors/google.d.ts +27 -0
- package/dist/lifeops/connectors/google.d.ts.map +1 -0
- package/dist/lifeops/connectors/google.js +80 -0
- package/dist/lifeops/connectors/google.js.map +1 -0
- package/dist/lifeops/connectors/imessage.d.ts +11 -0
- package/dist/lifeops/connectors/imessage.d.ts.map +1 -0
- package/dist/lifeops/connectors/imessage.js +55 -0
- package/dist/lifeops/connectors/imessage.js.map +1 -0
- package/dist/lifeops/connectors/index.d.ts +5 -0
- package/dist/lifeops/connectors/index.d.ts.map +1 -0
- package/dist/lifeops/connectors/index.js +23 -0
- package/dist/lifeops/connectors/index.js.map +1 -0
- package/dist/lifeops/connectors/mockoon-redirect.d.ts +54 -0
- package/dist/lifeops/connectors/mockoon-redirect.d.ts.map +1 -0
- package/dist/lifeops/connectors/mockoon-redirect.js +71 -0
- package/dist/lifeops/connectors/mockoon-redirect.js.map +1 -0
- package/dist/lifeops/connectors/registry.d.ts +7 -0
- package/dist/lifeops/connectors/registry.d.ts.map +1 -0
- package/dist/lifeops/connectors/registry.js +55 -0
- package/dist/lifeops/connectors/registry.js.map +1 -0
- package/dist/lifeops/connectors/signal.d.ts +8 -0
- package/dist/lifeops/connectors/signal.d.ts.map +1 -0
- package/dist/lifeops/connectors/signal.js +60 -0
- package/dist/lifeops/connectors/signal.js.map +1 -0
- package/dist/lifeops/connectors/telegram.d.ts +12 -0
- package/dist/lifeops/connectors/telegram.d.ts.map +1 -0
- package/dist/lifeops/connectors/telegram.js +65 -0
- package/dist/lifeops/connectors/telegram.js.map +1 -0
- package/dist/lifeops/connectors/twilio.d.ts +15 -0
- package/dist/lifeops/connectors/twilio.d.ts.map +1 -0
- package/dist/lifeops/connectors/twilio.js +126 -0
- package/dist/lifeops/connectors/twilio.js.map +1 -0
- package/dist/lifeops/connectors/whatsapp.d.ts +10 -0
- package/dist/lifeops/connectors/whatsapp.d.ts.map +1 -0
- package/dist/lifeops/connectors/whatsapp.js +56 -0
- package/dist/lifeops/connectors/whatsapp.js.map +1 -0
- package/dist/lifeops/connectors/x.d.ts +8 -0
- package/dist/lifeops/connectors/x.d.ts.map +1 -0
- package/dist/lifeops/connectors/x.js +62 -0
- package/dist/lifeops/connectors/x.js.map +1 -0
- package/dist/lifeops/contact-route-policy.d.ts +27 -0
- package/dist/lifeops/contact-route-policy.d.ts.map +1 -0
- package/dist/lifeops/contact-route-policy.js +153 -0
- package/dist/lifeops/contact-route-policy.js.map +1 -0
- package/dist/lifeops/continuity-probe.d.ts +49 -0
- package/dist/lifeops/continuity-probe.d.ts.map +1 -0
- package/dist/lifeops/continuity-probe.js +161 -0
- package/dist/lifeops/continuity-probe.js.map +1 -0
- package/dist/lifeops/cross-channel-search.d.ts +108 -0
- package/dist/lifeops/cross-channel-search.d.ts.map +1 -0
- package/dist/lifeops/cross-channel-search.js +888 -0
- package/dist/lifeops/cross-channel-search.js.map +1 -0
- package/dist/lifeops/defaults.d.ts +30 -0
- package/dist/lifeops/defaults.d.ts.map +1 -0
- package/dist/lifeops/defaults.js +206 -0
- package/dist/lifeops/defaults.js.map +1 -0
- package/dist/lifeops/device-bus-service.d.ts +16 -0
- package/dist/lifeops/device-bus-service.d.ts.map +1 -0
- package/dist/lifeops/device-bus-service.js +20 -0
- package/dist/lifeops/device-bus-service.js.map +1 -0
- package/dist/lifeops/device-identity.d.ts +31 -0
- package/dist/lifeops/device-identity.d.ts.map +1 -0
- package/dist/lifeops/device-identity.js +94 -0
- package/dist/lifeops/device-identity.js.map +1 -0
- package/dist/lifeops/document-review.d.ts +264 -0
- package/dist/lifeops/document-review.d.ts.map +1 -0
- package/dist/lifeops/document-review.js +925 -0
- package/dist/lifeops/document-review.js.map +1 -0
- package/dist/lifeops/email-classifier.d.ts +9 -0
- package/dist/lifeops/email-classifier.d.ts.map +1 -0
- package/dist/lifeops/email-classifier.js +15 -0
- package/dist/lifeops/email-classifier.js.map +1 -0
- package/dist/lifeops/email-curation.d.ts +13 -0
- package/dist/lifeops/email-curation.d.ts.map +1 -0
- package/dist/lifeops/email-curation.js +2 -0
- package/dist/lifeops/email-curation.js.map +1 -0
- package/dist/lifeops/email-unsubscribe-types.d.ts +7 -0
- package/dist/lifeops/email-unsubscribe-types.d.ts.map +1 -0
- package/dist/lifeops/email-unsubscribe-types.js +1 -0
- package/dist/lifeops/email-unsubscribe-types.js.map +1 -0
- package/dist/lifeops/enforcement-windows.d.ts +34 -0
- package/dist/lifeops/enforcement-windows.d.ts.map +1 -0
- package/dist/lifeops/enforcement-windows.js +80 -0
- package/dist/lifeops/enforcement-windows.js.map +1 -0
- package/dist/lifeops/engine.d.ts +8 -0
- package/dist/lifeops/engine.d.ts.map +1 -0
- package/dist/lifeops/engine.js +540 -0
- package/dist/lifeops/engine.js.map +1 -0
- package/dist/lifeops/entities/index.d.ts +4 -0
- package/dist/lifeops/entities/index.d.ts.map +1 -0
- package/dist/lifeops/entities/index.js +29 -0
- package/dist/lifeops/entities/index.js.map +1 -0
- package/dist/lifeops/entities/merge.d.ts +9 -0
- package/dist/lifeops/entities/merge.d.ts.map +1 -0
- package/dist/lifeops/entities/merge.js +17 -0
- package/dist/lifeops/entities/merge.js.map +1 -0
- package/dist/lifeops/entities/store.d.ts +13 -0
- package/dist/lifeops/entities/store.d.ts.map +1 -0
- package/dist/lifeops/entities/store.js +7 -0
- package/dist/lifeops/entities/store.js.map +1 -0
- package/dist/lifeops/entities/types.d.ts +9 -0
- package/dist/lifeops/entities/types.d.ts.map +1 -0
- package/dist/lifeops/entities/types.js +13 -0
- package/dist/lifeops/entities/types.js.map +1 -0
- package/dist/lifeops/entities/voice-attribution.d.ts +70 -0
- package/dist/lifeops/entities/voice-attribution.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-attribution.js +121 -0
- package/dist/lifeops/entities/voice-attribution.js.map +1 -0
- package/dist/lifeops/entities/voice-observer-bridge.d.ts +32 -0
- package/dist/lifeops/entities/voice-observer-bridge.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-observer-bridge.js +68 -0
- package/dist/lifeops/entities/voice-observer-bridge.js.map +1 -0
- package/dist/lifeops/entities/voice-observer.d.ts +72 -0
- package/dist/lifeops/entities/voice-observer.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-observer.js +97 -0
- package/dist/lifeops/entities/voice-observer.js.map +1 -0
- package/dist/lifeops/escalation-ladders.d.ts +28 -0
- package/dist/lifeops/escalation-ladders.d.ts.map +1 -0
- package/dist/lifeops/escalation-ladders.js +17 -0
- package/dist/lifeops/escalation-ladders.js.map +1 -0
- package/dist/lifeops/fda-probe.d.ts +23 -0
- package/dist/lifeops/fda-probe.d.ts.map +1 -0
- package/dist/lifeops/fda-probe.js +59 -0
- package/dist/lifeops/fda-probe.js.map +1 -0
- package/dist/lifeops/feature-flags.d.ts +24 -0
- package/dist/lifeops/feature-flags.d.ts.map +1 -0
- package/dist/lifeops/feature-flags.js +261 -0
- package/dist/lifeops/feature-flags.js.map +1 -0
- package/dist/lifeops/feature-flags.types.d.ts +156 -0
- package/dist/lifeops/feature-flags.types.d.ts.map +1 -0
- package/dist/lifeops/feature-flags.types.js +129 -0
- package/dist/lifeops/feature-flags.types.js.map +1 -0
- package/dist/lifeops/first-run/defaults.d.ts +57 -0
- package/dist/lifeops/first-run/defaults.d.ts.map +1 -0
- package/dist/lifeops/first-run/defaults.js +159 -0
- package/dist/lifeops/first-run/defaults.js.map +1 -0
- package/dist/lifeops/first-run/questions.d.ts +74 -0
- package/dist/lifeops/first-run/questions.d.ts.map +1 -0
- package/dist/lifeops/first-run/questions.js +184 -0
- package/dist/lifeops/first-run/questions.js.map +1 -0
- package/dist/lifeops/first-run/replay.d.ts +41 -0
- package/dist/lifeops/first-run/replay.d.ts.map +1 -0
- package/dist/lifeops/first-run/replay.js +34 -0
- package/dist/lifeops/first-run/replay.js.map +1 -0
- package/dist/lifeops/first-run/service.d.ts +147 -0
- package/dist/lifeops/first-run/service.d.ts.map +1 -0
- package/dist/lifeops/first-run/service.js +455 -0
- package/dist/lifeops/first-run/service.js.map +1 -0
- package/dist/lifeops/first-run/state.d.ts +36 -0
- package/dist/lifeops/first-run/state.d.ts.map +1 -0
- package/dist/lifeops/first-run/state.js +128 -0
- package/dist/lifeops/first-run/state.js.map +1 -0
- package/dist/lifeops/global-pause/store.d.ts +22 -0
- package/dist/lifeops/global-pause/store.d.ts.map +1 -0
- package/dist/lifeops/global-pause/store.js +18 -0
- package/dist/lifeops/global-pause/store.js.map +1 -0
- package/dist/lifeops/goal-grounding.d.ts +9 -0
- package/dist/lifeops/goal-grounding.d.ts.map +1 -0
- package/dist/lifeops/goal-grounding.js +19 -0
- package/dist/lifeops/goal-grounding.js.map +1 -0
- package/dist/lifeops/goal-semantic-evaluator.d.ts +8 -0
- package/dist/lifeops/goal-semantic-evaluator.d.ts.map +1 -0
- package/dist/lifeops/goal-semantic-evaluator.js +7 -0
- package/dist/lifeops/goal-semantic-evaluator.js.map +1 -0
- package/dist/lifeops/google/format-helpers.d.ts +63 -0
- package/dist/lifeops/google/format-helpers.d.ts.map +1 -0
- package/dist/lifeops/google/format-helpers.js +597 -0
- package/dist/lifeops/google/format-helpers.js.map +1 -0
- package/dist/lifeops/google-plugin-delegates.d.ts +59 -0
- package/dist/lifeops/google-plugin-delegates.d.ts.map +1 -0
- package/dist/lifeops/google-plugin-delegates.js +408 -0
- package/dist/lifeops/google-plugin-delegates.js.map +1 -0
- package/dist/lifeops/google-scopes.d.ts +15 -0
- package/dist/lifeops/google-scopes.d.ts.map +1 -0
- package/dist/lifeops/google-scopes.js +118 -0
- package/dist/lifeops/google-scopes.js.map +1 -0
- package/dist/lifeops/handoff/store.d.ts +23 -0
- package/dist/lifeops/handoff/store.d.ts.map +1 -0
- package/dist/lifeops/handoff/store.js +20 -0
- package/dist/lifeops/handoff/store.js.map +1 -0
- package/dist/lifeops/i18n/localized-examples-provider.d.ts +16 -0
- package/dist/lifeops/i18n/localized-examples-provider.d.ts.map +1 -0
- package/dist/lifeops/i18n/localized-examples-provider.js +33 -0
- package/dist/lifeops/i18n/localized-examples-provider.js.map +1 -0
- package/dist/lifeops/i18n/localized-examples-resolver.d.ts +32 -0
- package/dist/lifeops/i18n/localized-examples-resolver.d.ts.map +1 -0
- package/dist/lifeops/i18n/localized-examples-resolver.js +28 -0
- package/dist/lifeops/i18n/localized-examples-resolver.js.map +1 -0
- package/dist/lifeops/i18n/prompt-registry.d.ts +64 -0
- package/dist/lifeops/i18n/prompt-registry.d.ts.map +1 -0
- package/dist/lifeops/i18n/prompt-registry.js +283 -0
- package/dist/lifeops/i18n/prompt-registry.js.map +1 -0
- package/dist/lifeops/imessage-outbound-probe.d.ts +7 -0
- package/dist/lifeops/imessage-outbound-probe.d.ts.map +1 -0
- package/dist/lifeops/imessage-outbound-probe.js +81 -0
- package/dist/lifeops/imessage-outbound-probe.js.map +1 -0
- package/dist/lifeops/index.d.ts +24 -0
- package/dist/lifeops/index.d.ts.map +1 -0
- package/dist/lifeops/index.js +24 -0
- package/dist/lifeops/index.js.map +1 -0
- package/dist/lifeops/intent-sync.d.ts +64 -0
- package/dist/lifeops/intent-sync.d.ts.map +1 -0
- package/dist/lifeops/intent-sync.js +321 -0
- package/dist/lifeops/intent-sync.js.map +1 -0
- package/dist/lifeops/messaging/index.d.ts +2 -0
- package/dist/lifeops/messaging/index.d.ts.map +1 -0
- package/dist/lifeops/messaging/index.js +5 -0
- package/dist/lifeops/messaging/index.js.map +1 -0
- package/dist/lifeops/messaging/owner-send-policy.d.ts +3 -0
- package/dist/lifeops/messaging/owner-send-policy.d.ts.map +1 -0
- package/dist/lifeops/messaging/owner-send-policy.js +83 -0
- package/dist/lifeops/messaging/owner-send-policy.js.map +1 -0
- package/dist/lifeops/notifications-push.d.ts +37 -0
- package/dist/lifeops/notifications-push.d.ts.map +1 -0
- package/dist/lifeops/notifications-push.js +95 -0
- package/dist/lifeops/notifications-push.js.map +1 -0
- package/dist/lifeops/optimized-prompt-instructions.d.ts +5 -0
- package/dist/lifeops/optimized-prompt-instructions.d.ts.map +1 -0
- package/dist/lifeops/optimized-prompt-instructions.js +48 -0
- package/dist/lifeops/optimized-prompt-instructions.js.map +1 -0
- package/dist/lifeops/owner/fact-store.d.ts +143 -0
- package/dist/lifeops/owner/fact-store.d.ts.map +1 -0
- package/dist/lifeops/owner/fact-store.js +446 -0
- package/dist/lifeops/owner/fact-store.js.map +1 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.d.ts +3 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.d.ts.map +1 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.js +241 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.js.map +1 -0
- package/dist/lifeops/owner-profile.d.ts +61 -0
- package/dist/lifeops/owner-profile.d.ts.map +1 -0
- package/dist/lifeops/owner-profile.js +407 -0
- package/dist/lifeops/owner-profile.js.map +1 -0
- package/dist/lifeops/pending-prompts/store.d.ts +23 -0
- package/dist/lifeops/pending-prompts/store.d.ts.map +1 -0
- package/dist/lifeops/pending-prompts/store.js +16 -0
- package/dist/lifeops/pending-prompts/store.js.map +1 -0
- package/dist/lifeops/policy-memory.d.ts +190 -0
- package/dist/lifeops/policy-memory.d.ts.map +1 -0
- package/dist/lifeops/policy-memory.js +1026 -0
- package/dist/lifeops/policy-memory.js.map +1 -0
- package/dist/lifeops/priority-scoring.d.ts +51 -0
- package/dist/lifeops/priority-scoring.d.ts.map +1 -0
- package/dist/lifeops/priority-scoring.js +305 -0
- package/dist/lifeops/priority-scoring.js.map +1 -0
- package/dist/lifeops/privacy-egress.d.ts +92 -0
- package/dist/lifeops/privacy-egress.d.ts.map +1 -0
- package/dist/lifeops/privacy-egress.js +230 -0
- package/dist/lifeops/privacy-egress.js.map +1 -0
- package/dist/lifeops/privacy.d.ts +49 -0
- package/dist/lifeops/privacy.d.ts.map +1 -0
- package/dist/lifeops/privacy.js +66 -0
- package/dist/lifeops/privacy.js.map +1 -0
- package/dist/lifeops/redact-sensitive-data.d.ts +32 -0
- package/dist/lifeops/redact-sensitive-data.d.ts.map +1 -0
- package/dist/lifeops/redact-sensitive-data.js +98 -0
- package/dist/lifeops/redact-sensitive-data.js.map +1 -0
- package/dist/lifeops/registries/app-blocker-contribution.d.ts +13 -0
- package/dist/lifeops/registries/app-blocker-contribution.d.ts.map +1 -0
- package/dist/lifeops/registries/app-blocker-contribution.js +73 -0
- package/dist/lifeops/registries/app-blocker-contribution.js.map +1 -0
- package/dist/lifeops/registries/blocker-registry.d.ts +76 -0
- package/dist/lifeops/registries/blocker-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/blocker-registry.js +40 -0
- package/dist/lifeops/registries/blocker-registry.js.map +1 -0
- package/dist/lifeops/registries/event-kind-registry.d.ts +57 -0
- package/dist/lifeops/registries/event-kind-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/event-kind-registry.js +82 -0
- package/dist/lifeops/registries/event-kind-registry.js.map +1 -0
- package/dist/lifeops/registries/family-registry.d.ts +72 -0
- package/dist/lifeops/registries/family-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/family-registry.js +98 -0
- package/dist/lifeops/registries/family-registry.js.map +1 -0
- package/dist/lifeops/registries/feature-flag-default-pack.d.ts +32 -0
- package/dist/lifeops/registries/feature-flag-default-pack.d.ts.map +1 -0
- package/dist/lifeops/registries/feature-flag-default-pack.js +36 -0
- package/dist/lifeops/registries/feature-flag-default-pack.js.map +1 -0
- package/dist/lifeops/registries/feature-flag-registry.d.ts +76 -0
- package/dist/lifeops/registries/feature-flag-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/feature-flag-registry.js +68 -0
- package/dist/lifeops/registries/feature-flag-registry.js.map +1 -0
- package/dist/lifeops/registries/index.d.ts +24 -0
- package/dist/lifeops/registries/index.d.ts.map +1 -0
- package/dist/lifeops/registries/index.js +115 -0
- package/dist/lifeops/registries/index.js.map +1 -0
- package/dist/lifeops/registries/website-blocker-contribution.d.ts +21 -0
- package/dist/lifeops/registries/website-blocker-contribution.d.ts.map +1 -0
- package/dist/lifeops/registries/website-blocker-contribution.js +76 -0
- package/dist/lifeops/registries/website-blocker-contribution.js.map +1 -0
- package/dist/lifeops/registries/workflow-step-default-pack.d.ts +30 -0
- package/dist/lifeops/registries/workflow-step-default-pack.d.ts.map +1 -0
- package/dist/lifeops/registries/workflow-step-default-pack.js +315 -0
- package/dist/lifeops/registries/workflow-step-default-pack.js.map +1 -0
- package/dist/lifeops/registries/workflow-step-registry.d.ts +101 -0
- package/dist/lifeops/registries/workflow-step-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/workflow-step-registry.js +56 -0
- package/dist/lifeops/registries/workflow-step-registry.js.map +1 -0
- package/dist/lifeops/relationships/extraction.d.ts +77 -0
- package/dist/lifeops/relationships/extraction.d.ts.map +1 -0
- package/dist/lifeops/relationships/extraction.js +146 -0
- package/dist/lifeops/relationships/extraction.js.map +1 -0
- package/dist/lifeops/relationships/index.d.ts +4 -0
- package/dist/lifeops/relationships/index.d.ts.map +1 -0
- package/dist/lifeops/relationships/index.js +19 -0
- package/dist/lifeops/relationships/index.js.map +1 -0
- package/dist/lifeops/relationships/mapping.d.ts +34 -0
- package/dist/lifeops/relationships/mapping.d.ts.map +1 -0
- package/dist/lifeops/relationships/mapping.js +87 -0
- package/dist/lifeops/relationships/mapping.js.map +1 -0
- package/dist/lifeops/relationships/store.d.ts +12 -0
- package/dist/lifeops/relationships/store.d.ts.map +1 -0
- package/dist/lifeops/relationships/store.js +5 -0
- package/dist/lifeops/relationships/store.js.map +1 -0
- package/dist/lifeops/relationships/types.d.ts +9 -0
- package/dist/lifeops/relationships/types.d.ts.map +1 -0
- package/dist/lifeops/relationships/types.js +11 -0
- package/dist/lifeops/relationships/types.js.map +1 -0
- package/dist/lifeops/relative-schedule-resolver.d.ts +13 -0
- package/dist/lifeops/relative-schedule-resolver.d.ts.map +1 -0
- package/dist/lifeops/relative-schedule-resolver.js +107 -0
- package/dist/lifeops/relative-schedule-resolver.js.map +1 -0
- package/dist/lifeops/relative-time.d.ts +15 -0
- package/dist/lifeops/relative-time.d.ts.map +1 -0
- package/dist/lifeops/relative-time.js +191 -0
- package/dist/lifeops/relative-time.js.map +1 -0
- package/dist/lifeops/repository.d.ts +638 -0
- package/dist/lifeops/repository.d.ts.map +1 -0
- package/dist/lifeops/repository.js +6289 -0
- package/dist/lifeops/repository.js.map +1 -0
- package/dist/lifeops/runtime-cache.d.ts +4 -0
- package/dist/lifeops/runtime-cache.d.ts.map +1 -0
- package/dist/lifeops/runtime-cache.js +7 -0
- package/dist/lifeops/runtime-cache.js.map +1 -0
- package/dist/lifeops/runtime-service-delegates.d.ts +236 -0
- package/dist/lifeops/runtime-service-delegates.d.ts.map +1 -0
- package/dist/lifeops/runtime-service-delegates.js +839 -0
- package/dist/lifeops/runtime-service-delegates.js.map +1 -0
- package/dist/lifeops/runtime.d.ts +13 -0
- package/dist/lifeops/runtime.d.ts.map +1 -0
- package/dist/lifeops/runtime.js +104 -0
- package/dist/lifeops/runtime.js.map +1 -0
- package/dist/lifeops/schedule-insight.d.ts +133 -0
- package/dist/lifeops/schedule-insight.d.ts.map +1 -0
- package/dist/lifeops/schedule-insight.js +726 -0
- package/dist/lifeops/schedule-insight.js.map +1 -0
- package/dist/lifeops/schedule-state.d.ts +39 -0
- package/dist/lifeops/schedule-state.d.ts.map +1 -0
- package/dist/lifeops/schedule-state.js +671 -0
- package/dist/lifeops/schedule-state.js.map +1 -0
- package/dist/lifeops/schedule-sync-config.d.ts +3 -0
- package/dist/lifeops/schedule-sync-config.d.ts.map +1 -0
- package/dist/lifeops/schedule-sync-config.js +23 -0
- package/dist/lifeops/schedule-sync-config.js.map +1 -0
- package/dist/lifeops/schedule-sync-contracts.d.ts +2 -0
- package/dist/lifeops/schedule-sync-contracts.d.ts.map +1 -0
- package/dist/lifeops/schedule-sync-contracts.js +2 -0
- package/dist/lifeops/schedule-sync-contracts.js.map +1 -0
- package/dist/lifeops/scheduled-task/index.d.ts +13 -0
- package/dist/lifeops/scheduled-task/index.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/index.js +14 -0
- package/dist/lifeops/scheduled-task/index.js.map +1 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.d.ts +33 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.js +334 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.js.map +1 -0
- package/dist/lifeops/scheduled-task/scheduler.d.ts +28 -0
- package/dist/lifeops/scheduled-task/scheduler.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/scheduler.js +202 -0
- package/dist/lifeops/scheduled-task/scheduler.js.map +1 -0
- package/dist/lifeops/scheduled-task/service.d.ts +61 -0
- package/dist/lifeops/scheduled-task/service.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/service.js +64 -0
- package/dist/lifeops/scheduled-task/service.js.map +1 -0
- package/dist/lifeops/scheduler-task.d.ts +19 -0
- package/dist/lifeops/scheduler-task.d.ts.map +1 -0
- package/dist/lifeops/scheduler-task.js +201 -0
- package/dist/lifeops/scheduler-task.js.map +1 -0
- package/dist/lifeops/schema.d.ts +28068 -0
- package/dist/lifeops/schema.d.ts.map +1 -0
- package/dist/lifeops/schema.js +1689 -0
- package/dist/lifeops/schema.js.map +1 -0
- package/dist/lifeops/screen-context.d.ts +66 -0
- package/dist/lifeops/screen-context.d.ts.map +1 -0
- package/dist/lifeops/screen-context.js +347 -0
- package/dist/lifeops/screen-context.js.map +1 -0
- package/dist/lifeops/seed-routine-migration/migrator.d.ts +113 -0
- package/dist/lifeops/seed-routine-migration/migrator.d.ts.map +1 -0
- package/dist/lifeops/seed-routine-migration/migrator.js +142 -0
- package/dist/lifeops/seed-routine-migration/migrator.js.map +1 -0
- package/dist/lifeops/seed-routines.d.ts +24 -0
- package/dist/lifeops/seed-routines.d.ts.map +1 -0
- package/dist/lifeops/seed-routines.js +140 -0
- package/dist/lifeops/seed-routines.js.map +1 -0
- package/dist/lifeops/send-policy/contract.d.ts +81 -0
- package/dist/lifeops/send-policy/contract.d.ts.map +1 -0
- package/dist/lifeops/send-policy/contract.js +1 -0
- package/dist/lifeops/send-policy/contract.js.map +1 -0
- package/dist/lifeops/send-policy/index.d.ts +3 -0
- package/dist/lifeops/send-policy/index.d.ts.map +1 -0
- package/dist/lifeops/send-policy/index.js +13 -0
- package/dist/lifeops/send-policy/index.js.map +1 -0
- package/dist/lifeops/send-policy/registry.d.ts +7 -0
- package/dist/lifeops/send-policy/registry.d.ts.map +1 -0
- package/dist/lifeops/send-policy/registry.js +62 -0
- package/dist/lifeops/send-policy/registry.js.map +1 -0
- package/dist/lifeops/sensitive-request-delivery.d.ts +46 -0
- package/dist/lifeops/sensitive-request-delivery.d.ts.map +1 -0
- package/dist/lifeops/sensitive-request-delivery.js +103 -0
- package/dist/lifeops/sensitive-request-delivery.js.map +1 -0
- package/dist/lifeops/service-constants.d.ts +10 -0
- package/dist/lifeops/service-constants.d.ts.map +1 -0
- package/dist/lifeops/service-constants.js +129 -0
- package/dist/lifeops/service-constants.js.map +1 -0
- package/dist/lifeops/service-helpers-browser.d.ts +41 -0
- package/dist/lifeops/service-helpers-browser.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-browser.js +290 -0
- package/dist/lifeops/service-helpers-browser.js.map +1 -0
- package/dist/lifeops/service-helpers-misc.d.ts +68 -0
- package/dist/lifeops/service-helpers-misc.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-misc.js +531 -0
- package/dist/lifeops/service-helpers-misc.js.map +1 -0
- package/dist/lifeops/service-helpers-occurrence.d.ts +23 -0
- package/dist/lifeops/service-helpers-occurrence.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-occurrence.js +257 -0
- package/dist/lifeops/service-helpers-occurrence.js.map +1 -0
- package/dist/lifeops/service-helpers-reminder.d.ts +260 -0
- package/dist/lifeops/service-helpers-reminder.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-reminder.js +1186 -0
- package/dist/lifeops/service-helpers-reminder.js.map +1 -0
- package/dist/lifeops/service-mixin-browser.d.ts +31 -0
- package/dist/lifeops/service-mixin-browser.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-browser.js +975 -0
- package/dist/lifeops/service-mixin-browser.js.map +1 -0
- package/dist/lifeops/service-mixin-calendar.d.ts +53 -0
- package/dist/lifeops/service-mixin-calendar.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-calendar.js +68 -0
- package/dist/lifeops/service-mixin-calendar.js.map +1 -0
- package/dist/lifeops/service-mixin-core.d.ts +51 -0
- package/dist/lifeops/service-mixin-core.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-core.js +500 -0
- package/dist/lifeops/service-mixin-core.js.map +1 -0
- package/dist/lifeops/service-mixin-definitions.d.ts +14 -0
- package/dist/lifeops/service-mixin-definitions.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-definitions.js +470 -0
- package/dist/lifeops/service-mixin-definitions.js.map +1 -0
- package/dist/lifeops/service-mixin-discord.d.ts +49 -0
- package/dist/lifeops/service-mixin-discord.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-discord.js +1253 -0
- package/dist/lifeops/service-mixin-discord.js.map +1 -0
- package/dist/lifeops/service-mixin-drive.d.ts +96 -0
- package/dist/lifeops/service-mixin-drive.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-drive.js +213 -0
- package/dist/lifeops/service-mixin-drive.js.map +1 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.d.ts +23 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.js +27 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.js.map +1 -0
- package/dist/lifeops/service-mixin-gmail.d.ts +43 -0
- package/dist/lifeops/service-mixin-gmail.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-gmail.js +727 -0
- package/dist/lifeops/service-mixin-gmail.js.map +1 -0
- package/dist/lifeops/service-mixin-goals.d.ts +22 -0
- package/dist/lifeops/service-mixin-goals.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-goals.js +884 -0
- package/dist/lifeops/service-mixin-goals.js.map +1 -0
- package/dist/lifeops/service-mixin-google.d.ts +13 -0
- package/dist/lifeops/service-mixin-google.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-google.js +398 -0
- package/dist/lifeops/service-mixin-google.js.map +1 -0
- package/dist/lifeops/service-mixin-health.d.ts +27 -0
- package/dist/lifeops/service-mixin-health.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-health.js +670 -0
- package/dist/lifeops/service-mixin-health.js.map +1 -0
- package/dist/lifeops/service-mixin-imessage.d.ts +106 -0
- package/dist/lifeops/service-mixin-imessage.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-imessage.js +303 -0
- package/dist/lifeops/service-mixin-imessage.js.map +1 -0
- package/dist/lifeops/service-mixin-inbox.d.ts +55 -0
- package/dist/lifeops/service-mixin-inbox.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-inbox.js +597 -0
- package/dist/lifeops/service-mixin-inbox.js.map +1 -0
- package/dist/lifeops/service-mixin-relationships.d.ts +65 -0
- package/dist/lifeops/service-mixin-relationships.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-relationships.js +150 -0
- package/dist/lifeops/service-mixin-relationships.js.map +1 -0
- package/dist/lifeops/service-mixin-reminders.d.ts +62 -0
- package/dist/lifeops/service-mixin-reminders.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-reminders.js +4003 -0
- package/dist/lifeops/service-mixin-reminders.js.map +1 -0
- package/dist/lifeops/service-mixin-scheduling.d.ts +53 -0
- package/dist/lifeops/service-mixin-scheduling.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-scheduling.js +405 -0
- package/dist/lifeops/service-mixin-scheduling.js.map +1 -0
- package/dist/lifeops/service-mixin-screentime.d.ts +71 -0
- package/dist/lifeops/service-mixin-screentime.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-screentime.js +530 -0
- package/dist/lifeops/service-mixin-screentime.js.map +1 -0
- package/dist/lifeops/service-mixin-signal.d.ts +74 -0
- package/dist/lifeops/service-mixin-signal.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-signal.js +214 -0
- package/dist/lifeops/service-mixin-signal.js.map +1 -0
- package/dist/lifeops/service-mixin-sleep.d.ts +68 -0
- package/dist/lifeops/service-mixin-sleep.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-sleep.js +43 -0
- package/dist/lifeops/service-mixin-sleep.js.map +1 -0
- package/dist/lifeops/service-mixin-status.d.ts +31 -0
- package/dist/lifeops/service-mixin-status.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-status.js +373 -0
- package/dist/lifeops/service-mixin-status.js.map +1 -0
- package/dist/lifeops/service-mixin-subscriptions.d.ts +101 -0
- package/dist/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-subscriptions.js +50 -0
- package/dist/lifeops/service-mixin-subscriptions.js.map +1 -0
- package/dist/lifeops/service-mixin-telegram.d.ts +104 -0
- package/dist/lifeops/service-mixin-telegram.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-telegram.js +280 -0
- package/dist/lifeops/service-mixin-telegram.js.map +1 -0
- package/dist/lifeops/service-mixin-travel.d.ts +66 -0
- package/dist/lifeops/service-mixin-travel.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-travel.js +275 -0
- package/dist/lifeops/service-mixin-travel.js.map +1 -0
- package/dist/lifeops/service-mixin-whatsapp.d.ts +96 -0
- package/dist/lifeops/service-mixin-whatsapp.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-whatsapp.js +186 -0
- package/dist/lifeops/service-mixin-whatsapp.js.map +1 -0
- package/dist/lifeops/service-mixin-workflows.d.ts +15 -0
- package/dist/lifeops/service-mixin-workflows.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-workflows.js +710 -0
- package/dist/lifeops/service-mixin-workflows.js.map +1 -0
- package/dist/lifeops/service-mixin-x-read.d.ts +31 -0
- package/dist/lifeops/service-mixin-x-read.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-x-read.js +267 -0
- package/dist/lifeops/service-mixin-x-read.js.map +1 -0
- package/dist/lifeops/service-mixin-x.d.ts +66 -0
- package/dist/lifeops/service-mixin-x.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-x.js +501 -0
- package/dist/lifeops/service-mixin-x.js.map +1 -0
- package/dist/lifeops/service-normalize-connector.d.ts +19 -0
- package/dist/lifeops/service-normalize-connector.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-connector.js +816 -0
- package/dist/lifeops/service-normalize-connector.js.map +1 -0
- package/dist/lifeops/service-normalize-gmail.d.ts +11 -0
- package/dist/lifeops/service-normalize-gmail.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-gmail.js +85 -0
- package/dist/lifeops/service-normalize-gmail.js.map +1 -0
- package/dist/lifeops/service-normalize-task.d.ts +9 -0
- package/dist/lifeops/service-normalize-task.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-task.js +567 -0
- package/dist/lifeops/service-normalize-task.js.map +1 -0
- package/dist/lifeops/service-normalize.d.ts +9 -0
- package/dist/lifeops/service-normalize.d.ts.map +1 -0
- package/dist/lifeops/service-normalize.js +53 -0
- package/dist/lifeops/service-normalize.js.map +1 -0
- package/dist/lifeops/service-types.d.ts +75 -0
- package/dist/lifeops/service-types.d.ts.map +1 -0
- package/dist/lifeops/service-types.js +5 -0
- package/dist/lifeops/service-types.js.map +1 -0
- package/dist/lifeops/service.d.ts +482 -0
- package/dist/lifeops/service.d.ts.map +1 -0
- package/dist/lifeops/service.js +62 -0
- package/dist/lifeops/service.js.map +1 -0
- package/dist/lifeops/signal-runtime-config.d.ts +13 -0
- package/dist/lifeops/signal-runtime-config.d.ts.map +1 -0
- package/dist/lifeops/signal-runtime-config.js +44 -0
- package/dist/lifeops/signal-runtime-config.js.map +1 -0
- package/dist/lifeops/signals/bus.d.ts +78 -0
- package/dist/lifeops/signals/bus.d.ts.map +1 -0
- package/dist/lifeops/signals/bus.js +117 -0
- package/dist/lifeops/signals/bus.js.map +1 -0
- package/dist/lifeops/sql.d.ts +65 -0
- package/dist/lifeops/sql.d.ts.map +1 -0
- package/dist/lifeops/sql.js +182 -0
- package/dist/lifeops/sql.js.map +1 -0
- package/dist/lifeops/stretch-decider.d.ts +73 -0
- package/dist/lifeops/stretch-decider.d.ts.map +1 -0
- package/dist/lifeops/stretch-decider.js +49 -0
- package/dist/lifeops/stretch-decider.js.map +1 -0
- package/dist/lifeops/telemetry-mapping.d.ts +14 -0
- package/dist/lifeops/telemetry-mapping.d.ts.map +1 -0
- package/dist/lifeops/telemetry-mapping.js +115 -0
- package/dist/lifeops/telemetry-mapping.js.map +1 -0
- package/dist/lifeops/telemetry-retention.d.ts +21 -0
- package/dist/lifeops/telemetry-retention.d.ts.map +1 -0
- package/dist/lifeops/telemetry-retention.js +13 -0
- package/dist/lifeops/telemetry-retention.js.map +1 -0
- package/dist/lifeops/time/timezone.d.ts +4 -0
- package/dist/lifeops/time/timezone.d.ts.map +1 -0
- package/dist/lifeops/time/timezone.js +154 -0
- package/dist/lifeops/time/timezone.js.map +1 -0
- package/dist/lifeops/time-util.d.ts +10 -0
- package/dist/lifeops/time-util.d.ts.map +1 -0
- package/dist/lifeops/time-util.js +14 -0
- package/dist/lifeops/time-util.js.map +1 -0
- package/dist/lifeops/time.d.ts +17 -0
- package/dist/lifeops/time.d.ts.map +1 -0
- package/dist/lifeops/time.js +152 -0
- package/dist/lifeops/time.js.map +1 -0
- package/dist/lifeops/travel-booking.types.d.ts +46 -0
- package/dist/lifeops/travel-booking.types.d.ts.map +1 -0
- package/dist/lifeops/travel-booking.types.js +1 -0
- package/dist/lifeops/travel-booking.types.js.map +1 -0
- package/dist/lifeops/triggers/schedule-once.d.ts +19 -0
- package/dist/lifeops/triggers/schedule-once.d.ts.map +1 -0
- package/dist/lifeops/triggers/schedule-once.js +99 -0
- package/dist/lifeops/triggers/schedule-once.js.map +1 -0
- package/dist/lifeops/validate/coding-task-request.d.ts +18 -0
- package/dist/lifeops/validate/coding-task-request.d.ts.map +1 -0
- package/dist/lifeops/validate/coding-task-request.js +16 -0
- package/dist/lifeops/validate/coding-task-request.js.map +1 -0
- package/dist/lifeops/voice/grounded-reply.d.ts +41 -0
- package/dist/lifeops/voice/grounded-reply.d.ts.map +1 -0
- package/dist/lifeops/voice/grounded-reply.js +24 -0
- package/dist/lifeops/voice/grounded-reply.js.map +1 -0
- package/dist/lifeops/voice-affect.d.ts +79 -0
- package/dist/lifeops/voice-affect.d.ts.map +1 -0
- package/dist/lifeops/voice-affect.js +253 -0
- package/dist/lifeops/voice-affect.js.map +1 -0
- package/dist/lifeops/wave1-types.d.ts +125 -0
- package/dist/lifeops/wave1-types.d.ts.map +1 -0
- package/dist/lifeops/wave1-types.js +1 -0
- package/dist/lifeops/wave1-types.js.map +1 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts +33 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts.map +1 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.js +226 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.js.map +1 -0
- package/dist/lifeops/work-threads/index.d.ts +3 -0
- package/dist/lifeops/work-threads/index.d.ts.map +1 -0
- package/dist/lifeops/work-threads/index.js +7 -0
- package/dist/lifeops/work-threads/index.js.map +1 -0
- package/dist/lifeops/work-threads/store.d.ts +91 -0
- package/dist/lifeops/work-threads/store.d.ts.map +1 -0
- package/dist/lifeops/work-threads/store.js +245 -0
- package/dist/lifeops/work-threads/store.js.map +1 -0
- package/dist/lifeops/work-threads/types.d.ts +58 -0
- package/dist/lifeops/work-threads/types.d.ts.map +1 -0
- package/dist/lifeops/work-threads/types.js +1 -0
- package/dist/lifeops/work-threads/types.js.map +1 -0
- package/dist/platform/host.d.ts +16 -0
- package/dist/platform/host.d.ts.map +1 -0
- package/dist/platform/host.js +22 -0
- package/dist/platform/host.js.map +1 -0
- package/dist/platform/index.d.ts +3 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +3 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/lifeops-github.d.ts +15 -0
- package/dist/platform/lifeops-github.d.ts.map +1 -0
- package/dist/platform/lifeops-github.js +146 -0
- package/dist/platform/lifeops-github.js.map +1 -0
- package/dist/plugin.d.ts +106 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +989 -0
- package/dist/plugin.js.map +1 -0
- package/dist/provider.d.ts +4 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +108 -0
- package/dist/provider.js.map +1 -0
- package/dist/providers/activity-profile.d.ts +3 -0
- package/dist/providers/activity-profile.d.ts.map +1 -0
- package/dist/providers/activity-profile.js +140 -0
- package/dist/providers/activity-profile.js.map +1 -0
- package/dist/providers/cross-channel-context.d.ts +29 -0
- package/dist/providers/cross-channel-context.d.ts.map +1 -0
- package/dist/providers/cross-channel-context.js +206 -0
- package/dist/providers/cross-channel-context.js.map +1 -0
- package/dist/providers/first-run.d.ts +22 -0
- package/dist/providers/first-run.d.ts.map +1 -0
- package/dist/providers/first-run.js +93 -0
- package/dist/providers/first-run.js.map +1 -0
- package/dist/providers/health.d.ts +2 -0
- package/dist/providers/health.d.ts.map +1 -0
- package/dist/providers/health.js +14 -0
- package/dist/providers/health.js.map +1 -0
- package/dist/providers/inbox-triage.d.ts +3 -0
- package/dist/providers/inbox-triage.d.ts.map +1 -0
- package/dist/providers/inbox-triage.js +134 -0
- package/dist/providers/inbox-triage.js.map +1 -0
- package/dist/providers/lifeops.d.ts +3 -0
- package/dist/providers/lifeops.d.ts.map +1 -0
- package/dist/providers/lifeops.js +548 -0
- package/dist/providers/lifeops.js.map +1 -0
- package/dist/providers/pending-prompts.d.ts +38 -0
- package/dist/providers/pending-prompts.d.ts.map +1 -0
- package/dist/providers/pending-prompts.js +81 -0
- package/dist/providers/pending-prompts.js.map +1 -0
- package/dist/providers/recent-task-states.d.ts +52 -0
- package/dist/providers/recent-task-states.d.ts.map +1 -0
- package/dist/providers/recent-task-states.js +166 -0
- package/dist/providers/recent-task-states.js.map +1 -0
- package/dist/providers/room-policy.d.ts +16 -0
- package/dist/providers/room-policy.d.ts.map +1 -0
- package/dist/providers/room-policy.js +71 -0
- package/dist/providers/room-policy.js.map +1 -0
- package/dist/providers/work-threads.d.ts +3 -0
- package/dist/providers/work-threads.d.ts.map +1 -0
- package/dist/providers/work-threads.js +97 -0
- package/dist/providers/work-threads.js.map +1 -0
- package/dist/public.d.ts +3 -0
- package/dist/public.d.ts.map +1 -0
- package/dist/public.js +17 -0
- package/dist/public.js.map +1 -0
- package/dist/routes/cloud-features-routes.d.ts +9 -0
- package/dist/routes/cloud-features-routes.d.ts.map +1 -0
- package/dist/routes/cloud-features-routes.js +164 -0
- package/dist/routes/cloud-features-routes.js.map +1 -0
- package/dist/routes/entities.d.ts +14 -0
- package/dist/routes/entities.d.ts.map +1 -0
- package/dist/routes/entities.js +203 -0
- package/dist/routes/entities.js.map +1 -0
- package/dist/routes/lifeops-routes.d.ts +20 -0
- package/dist/routes/lifeops-routes.d.ts.map +1 -0
- package/dist/routes/lifeops-routes.js +2337 -0
- package/dist/routes/lifeops-routes.js.map +1 -0
- package/dist/routes/plugin.d.ts +9 -0
- package/dist/routes/plugin.d.ts.map +1 -0
- package/dist/routes/plugin.js +568 -0
- package/dist/routes/plugin.js.map +1 -0
- package/dist/routes/relationships.d.ts +13 -0
- package/dist/routes/relationships.d.ts.map +1 -0
- package/dist/routes/relationships.js +195 -0
- package/dist/routes/relationships.js.map +1 -0
- package/dist/routes/scheduled-tasks.d.ts +102 -0
- package/dist/routes/scheduled-tasks.d.ts.map +1 -0
- package/dist/routes/scheduled-tasks.js +322 -0
- package/dist/routes/scheduled-tasks.js.map +1 -0
- package/dist/routes/sleep-routes.d.ts +3 -0
- package/dist/routes/sleep-routes.d.ts.map +1 -0
- package/dist/routes/sleep-routes.js +33 -0
- package/dist/routes/sleep-routes.js.map +1 -0
- package/dist/routes/travel-provider-relay-routes.d.ts +2 -0
- package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
- package/dist/routes/travel-provider-relay-routes.js +7 -0
- package/dist/routes/travel-provider-relay-routes.js.map +1 -0
- package/dist/routes/website-blocker-routes.d.ts +6 -0
- package/dist/routes/website-blocker-routes.d.ts.map +1 -0
- package/dist/routes/website-blocker-routes.js +218 -0
- package/dist/routes/website-blocker-routes.js.map +1 -0
- package/dist/security/action-confirmation.d.ts +12 -0
- package/dist/security/action-confirmation.d.ts.map +1 -0
- package/dist/security/action-confirmation.js +36 -0
- package/dist/security/action-confirmation.js.map +1 -0
- package/dist/service.d.ts +34 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +111 -0
- package/dist/service.js.map +1 -0
- package/dist/travel-time/calendar-create.d.ts +17 -0
- package/dist/travel-time/calendar-create.d.ts.map +1 -0
- package/dist/travel-time/calendar-create.js +28 -0
- package/dist/travel-time/calendar-create.js.map +1 -0
- package/dist/travel-time/service.d.ts +114 -0
- package/dist/travel-time/service.d.ts.map +1 -0
- package/dist/travel-time/service.js +209 -0
- package/dist/travel-time/service.js.map +1 -0
- package/dist/types/app-blocker-settings-card.d.ts +2 -0
- package/dist/types/app-blocker-settings-card.d.ts.map +1 -0
- package/dist/types/app-blocker-settings-card.js +1 -0
- package/dist/types/app-blocker-settings-card.js.map +1 -0
- package/dist/types/briefing.d.ts +59 -0
- package/dist/types/briefing.d.ts.map +1 -0
- package/dist/types/briefing.js +1 -0
- package/dist/types/briefing.js.map +1 -0
- package/dist/types/document-request.d.ts +41 -0
- package/dist/types/document-request.d.ts.map +1 -0
- package/dist/types/document-request.js +1 -0
- package/dist/types/document-request.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/website-blocker-settings-card.d.ts +2 -0
- package/dist/types/website-blocker-settings-card.d.ts.map +1 -0
- package/dist/types/website-blocker-settings-card.js +1 -0
- package/dist/types/website-blocker-settings-card.js.map +1 -0
- package/dist/ui.d.ts +13 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +25 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils/format-duration.d.ts +2 -0
- package/dist/utils/format-duration.d.ts.map +1 -0
- package/dist/utils/format-duration.js +13 -0
- package/dist/utils/format-duration.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/lifeops-url.d.ts +3 -0
- package/dist/utils/lifeops-url.d.ts.map +1 -0
- package/dist/utils/lifeops-url.js +28 -0
- package/dist/utils/lifeops-url.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-activator.d.ts +32 -0
- package/dist/website-blocker/chat-integration/block-activator.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-activator.js +30 -0
- package/dist/website-blocker/chat-integration/block-activator.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts +7 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.js +115 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.d.ts +39 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.js +133 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-service.d.ts +21 -0
- package/dist/website-blocker/chat-integration/block-rule-service.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-service.js +230 -0
- package/dist/website-blocker/chat-integration/block-rule-service.js.map +1 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts +13 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.js +22 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.js.map +1 -0
- package/dist/website-blocker/chat-integration/index.d.ts +5 -0
- package/dist/website-blocker/chat-integration/index.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/index.js +26 -0
- package/dist/website-blocker/chat-integration/index.js.map +1 -0
- package/dist/website-blocker/proactive-block-bridge.d.ts +75 -0
- package/dist/website-blocker/proactive-block-bridge.d.ts.map +1 -0
- package/dist/website-blocker/proactive-block-bridge.js +154 -0
- package/dist/website-blocker/proactive-block-bridge.js.map +1 -0
- package/dist/website-blocker/public.d.ts +12 -0
- package/dist/website-blocker/public.d.ts.map +1 -0
- package/dist/website-blocker/public.js +51 -0
- package/dist/website-blocker/public.js.map +1 -0
- package/package.json +28 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/service-mixin-goals.ts"],"sourcesContent":["import {\n GoalsService,\n scoreGoalSimilarity,\n} from \"@elizaos/plugin-goals/goals-service\";\nimport type {\n CreateLifeOpsGoalRequest,\n LifeOpsActivitySignal,\n LifeOpsChannelPolicy,\n LifeOpsDefinitionRecord,\n LifeOpsGoalDefinition,\n LifeOpsGoalExperienceLoop,\n LifeOpsGoalExperienceLoopMatch,\n LifeOpsGoalExperienceLoopSuggestion,\n LifeOpsGoalRecord,\n LifeOpsGoalReview,\n LifeOpsGoalSupportSuggestion,\n LifeOpsOccurrenceExplanation,\n LifeOpsOccurrenceView,\n LifeOpsOverview,\n LifeOpsOverviewSection,\n LifeOpsReminderInspection,\n LifeOpsReminderPlan,\n LifeOpsReminderPreference,\n LifeOpsReminderUrgency,\n LifeOpsTaskDefinition,\n LifeOpsWeeklyGoalReview,\n UpdateLifeOpsGoalRequest,\n} from \"../contracts/index.js\";\nimport { LIFEOPS_GOAL_SUGGESTION_KINDS } from \"../contracts/index.js\";\nimport { resolveDefaultTimeZone } from \"./defaults.js\";\nimport {\n type buildGoalSemanticReviewMetadata,\n mergeGoalSemanticReviewMetadata,\n readGoalGroundingMetadata,\n readGoalSemanticReviewMetadata,\n} from \"./goal-grounding.js\";\nimport { evaluateGoalProgressWithLlm } from \"./goal-semantic-evaluator.js\";\nimport {\n createLifeOpsAuditEvent,\n type LifeOpsScheduleMergedStateRecord,\n} from \"./repository.js\";\nimport {\n GOAL_REVIEW_LOOKBACK_DAYS,\n GOAL_SEMANTIC_REVIEW_CACHE_TTL_MS,\n MAX_OVERVIEW_REMINDERS,\n OVERVIEW_HORIZON_MINUTES,\n} from \"./service-constants.js\";\nimport {\n buildActiveCalendarEventReminders,\n buildActiveReminders,\n isRecord,\n mergeMetadata,\n priorityToUrgency,\n selectOverviewOccurrences,\n} from \"./service-helpers-misc.js\";\nimport { summarizeOverviewSection } from \"./service-helpers-occurrence.js\";\nimport { shouldDeliverReminderForIntensity } from \"./service-helpers-reminder.js\";\nimport type {\n Constructor,\n LifeOpsServiceBase,\n MixinClass,\n} from \"./service-mixin-core.js\";\nimport { fail, normalizeReminderUrgency } from \"./service-normalize.js\";\nimport { addMinutes, getZonedDateParts } from \"./time.js\";\n\nexport interface LifeOpsGoalService {\n deleteGoal(goalId: string): Promise<void>;\n listGoals(): Promise<LifeOpsGoalRecord[]>;\n getGoal(goalId: string): Promise<LifeOpsGoalRecord>;\n createGoal(request: CreateLifeOpsGoalRequest): Promise<LifeOpsGoalRecord>;\n updateGoal(\n goalId: string,\n request: UpdateLifeOpsGoalRequest,\n ): Promise<LifeOpsGoalRecord>;\n reviewGoal(goalId: string, now?: Date): Promise<LifeOpsGoalReview>;\n explainOccurrence(\n occurrenceId: string,\n ): Promise<LifeOpsOccurrenceExplanation>;\n getOverview(now?: Date): Promise<LifeOpsOverview>;\n listChannelPolicies(): Promise<LifeOpsChannelPolicy[]>;\n buildGoalExperienceLoop(\n reference: {\n goalId?: string | null;\n title: string;\n description?: string | null;\n successCriteria?: Record<string, unknown> | null;\n },\n now?: Date,\n ): Promise<LifeOpsGoalExperienceLoop>;\n reviewGoalsForWeek(now?: Date): Promise<LifeOpsWeeklyGoalReview>;\n}\n\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\n/** Days of inactivity after which a daily / interval / times-per-day goal is\n * considered stale enough to demote from \"on_track\". The cadences run at\n * least every other day, so two days without activity is the earliest\n * defensible signal. */\nconst GOAL_STALE_DAYS_FREQUENT = 2;\n/** Stale threshold for weekly cadences. Allows one full skipped week before\n * the goal flips to \"needs_attention\". */\nconst GOAL_STALE_DAYS_WEEKLY = 10;\n/** Stale threshold for goals whose cadence is anything else (manual,\n * monthly, ad-hoc). Keeps the default close to the weekly bar. */\nconst GOAL_STALE_DAYS_DEFAULT = 7;\n\ntype GoalMixinDependencies = LifeOpsServiceBase & {\n getGoalRecord(goalId: string): Promise<LifeOpsGoalRecord>;\n getDefinitionRecord(definitionId: string): Promise<LifeOpsDefinitionRecord>;\n listActivitySignals(args?: {\n sinceAt?: string | null;\n limit?: number | null;\n states?: LifeOpsActivitySignal[\"state\"][] | null;\n }): Promise<LifeOpsActivitySignal[]>;\n inspectReminder(\n ownerType: \"occurrence\" | \"calendar_event\",\n ownerId: string,\n ): Promise<LifeOpsReminderInspection>;\n refreshEffectiveScheduleState(args?: {\n timezone?: string | null;\n now?: Date;\n }): Promise<LifeOpsScheduleMergedStateRecord | null>;\n refreshDefinitionOccurrences(\n definition: LifeOpsTaskDefinition,\n now?: Date,\n ): Promise<void>;\n buildReminderPreferenceResponse(\n definition: LifeOpsTaskDefinition | null,\n policies: LifeOpsChannelPolicy[],\n ): LifeOpsReminderPreference;\n resolveEffectiveReminderPlan(\n plan: LifeOpsReminderPlan | null,\n preference: LifeOpsReminderPreference,\n ): LifeOpsReminderPlan | null;\n};\n\nexport function withGoals<TBase extends Constructor<LifeOpsServiceBase>>(\n Base: TBase,\n): MixinClass<TBase, LifeOpsGoalService> {\n const GoalsBase = Base as unknown as Constructor<GoalMixinDependencies>;\n\n class LifeOpsGoalServiceMixin extends GoalsBase {\n // The goal CRUD back-end (create/update/delete/list/get + dedup + scoring)\n // is owned by @elizaos/plugin-goals (`GoalsService`). PA keeps the\n // cross-domain goal review / overview / experience-loop logic (which\n // aggregates the definition / occurrence / reminder / calendar graph that\n // is PA-owned) and delegates the CRUD methods here so the route + view stay\n // byte-identical. recordAudit (shared `app_lifeops` audit store) and\n // normalizeOwnership (PA domain/identity rules) are passed in as hooks.\n private goalsServiceInstance: GoalsService | null = null;\n\n private goalsService(): GoalsService {\n if (!this.goalsServiceInstance) {\n this.goalsServiceInstance = new GoalsService(this.runtime, {\n recordAudit: (\n eventType,\n ownerType,\n ownerId,\n reason,\n inputs,\n decision,\n ) =>\n this.recordAudit(\n eventType,\n ownerType,\n ownerId,\n reason,\n inputs,\n decision,\n ),\n normalizeOwnership: (input, current) =>\n this.normalizeOwnership(input, current),\n });\n }\n return this.goalsServiceInstance;\n }\n\n async deleteGoal(goalId: string): Promise<void> {\n return this.goalsService().deleteGoal(goalId);\n }\n\n async listGoals(): Promise<LifeOpsGoalRecord[]> {\n return this.goalsService().listGoals();\n }\n\n async getGoal(goalId: string): Promise<LifeOpsGoalRecord> {\n return this.goalsService().getGoal(goalId);\n }\n\n async createGoal(\n request: CreateLifeOpsGoalRequest,\n ): Promise<LifeOpsGoalRecord> {\n return this.goalsService().createGoal(request);\n }\n\n async updateGoal(\n goalId: string,\n request: UpdateLifeOpsGoalRequest,\n ): Promise<LifeOpsGoalRecord> {\n return this.goalsService().updateGoal(goalId, request);\n }\n\n public async collectLinkedDefinitionsForGoal(\n goalRecord: LifeOpsGoalRecord,\n ): Promise<LifeOpsTaskDefinition[]> {\n const linkedDefinitionIds = new Set(\n goalRecord.links\n .filter((link) => link.linkedType === \"definition\")\n .map((link) => link.linkedId),\n );\n const definitions = await this.repository.listDefinitions(this.agentId());\n return definitions\n .filter(\n (definition) =>\n definition.status !== \"archived\" &&\n (definition.goalId === goalRecord.goal.id ||\n linkedDefinitionIds.has(definition.id)),\n )\n .sort((left, right) => left.title.localeCompare(right.title));\n }\n\n public async collectOccurrenceViewsForDefinitions(\n definitions: LifeOpsTaskDefinition[],\n ): Promise<LifeOpsOccurrenceView[]> {\n const views: LifeOpsOccurrenceView[] = [];\n for (const definition of definitions) {\n const occurrences = await this.repository.listOccurrencesForDefinition(\n this.agentId(),\n definition.id,\n );\n for (const occurrence of occurrences) {\n const view = await this.repository.getOccurrenceView(\n this.agentId(),\n occurrence.id,\n );\n if (view) {\n views.push(view);\n }\n }\n }\n views.sort(\n (left, right) =>\n new Date(left.updatedAt).getTime() -\n new Date(right.updatedAt).getTime(),\n );\n return views;\n }\n\n public deriveGoalReviewState(\n goal: LifeOpsGoalDefinition,\n definitions: LifeOpsTaskDefinition[],\n activeOccurrences: LifeOpsOccurrenceView[],\n overdueOccurrences: LifeOpsOccurrenceView[],\n recentCompletions: LifeOpsOccurrenceView[],\n lastActivityAt: string | null,\n now: Date,\n ): LifeOpsGoalDefinition[\"reviewState\"] {\n if (goal.status === \"satisfied\") {\n return \"on_track\";\n }\n if (goal.status !== \"active\") {\n return goal.reviewState;\n }\n if (definitions.length === 0) {\n return \"needs_attention\";\n }\n if (overdueOccurrences.length > 0) {\n return \"at_risk\";\n }\n if (!lastActivityAt) {\n return \"needs_attention\";\n }\n const cadenceKind =\n isRecord(goal.cadence) && typeof goal.cadence.kind === \"string\"\n ? goal.cadence.kind\n : null;\n const staleMs =\n cadenceKind === \"daily\" ||\n cadenceKind === \"times_per_day\" ||\n cadenceKind === \"interval\"\n ? GOAL_STALE_DAYS_FREQUENT * ONE_DAY_MS\n : cadenceKind === \"weekly\"\n ? GOAL_STALE_DAYS_WEEKLY * ONE_DAY_MS\n : GOAL_STALE_DAYS_DEFAULT * ONE_DAY_MS;\n const lastActivityTime = new Date(lastActivityAt).getTime();\n if (!Number.isFinite(lastActivityTime)) {\n return \"needs_attention\";\n }\n if (now.getTime() - lastActivityTime > staleMs) {\n return activeOccurrences.length > 0 ? \"needs_attention\" : \"at_risk\";\n }\n if (recentCompletions.length === 0 && activeOccurrences.length === 0) {\n return \"needs_attention\";\n }\n return \"on_track\";\n }\n\n public buildGoalReviewExplanation(args: {\n goal: LifeOpsGoalDefinition;\n linkedDefinitionCount: number;\n activeOccurrenceCount: number;\n overdueOccurrenceCount: number;\n completedLast7Days: number;\n reviewState: LifeOpsGoalDefinition[\"reviewState\"];\n lastActivityAt: string | null;\n }): string {\n if (args.goal.status === \"satisfied\") {\n return \"This goal is marked satisfied and currently does not need more support work.\";\n }\n if (args.linkedDefinitionCount === 0) {\n return \"This goal has no linked support tasks or routines yet, so there is nothing concrete to keep it moving.\";\n }\n if (args.overdueOccurrenceCount > 0) {\n return `This goal is at risk because ${args.overdueOccurrenceCount} linked support ${args.overdueOccurrenceCount === 1 ? \"item is\" : \"items are\"} overdue.`;\n }\n if (args.completedLast7Days > 0) {\n return `This goal is on track because ${args.completedLast7Days} linked support ${args.completedLast7Days === 1 ? \"item was\" : \"items were\"} completed in the last 7 days.`;\n }\n if (args.activeOccurrenceCount > 0) {\n return `This goal has ${args.activeOccurrenceCount} active support ${args.activeOccurrenceCount === 1 ? \"item\" : \"items\"} in flight right now.`;\n }\n if (args.lastActivityAt) {\n return `This goal has support structure, but it has been quiet since ${args.lastActivityAt}.`;\n }\n if (args.reviewState === \"needs_attention\") {\n return \"This goal needs a clearer support structure or a new check-in.\";\n }\n return \"This goal has support structure and does not currently have overdue work.\";\n }\n\n public buildGoalSupportSuggestions(args: {\n goal: LifeOpsGoalDefinition;\n linkedDefinitions: LifeOpsTaskDefinition[];\n activeOccurrences: LifeOpsOccurrenceView[];\n overdueOccurrences: LifeOpsOccurrenceView[];\n recentCompletions: LifeOpsOccurrenceView[];\n }): LifeOpsGoalSupportSuggestion[] {\n const suggestions: LifeOpsGoalSupportSuggestion[] = [];\n if (args.linkedDefinitions.length === 0) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[0],\n title: \"Create the first support routine\",\n detail:\n \"Break this goal into a recurring task, habit, or routine so the agent can track and remind against something concrete.\",\n definitionId: null,\n occurrenceId: null,\n });\n return suggestions;\n }\n for (const overdue of args.overdueOccurrences.slice(0, 2)) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[2],\n title: overdue.title,\n detail:\n \"Resolve or reschedule this overdue support item so the goal is no longer drifting.\",\n definitionId: overdue.definitionId,\n occurrenceId: overdue.id,\n });\n }\n if (suggestions.length === 0 && args.activeOccurrences.length > 0) {\n const next = args.activeOccurrences[0];\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[1],\n title: next.title,\n detail:\n \"This is the clearest current action that advances the goal right now.\",\n definitionId: next.definitionId,\n occurrenceId: next.id,\n });\n }\n if (args.recentCompletions.length === 0) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[3],\n title: \"Review progress\",\n detail:\n \"Check whether the current cadence still fits the goal, or whether the goal needs a stronger routine.\",\n definitionId: null,\n occurrenceId: null,\n });\n }\n if (\n suggestions.length < 3 &&\n args.linkedDefinitions.every((definition) => definition.kind === \"task\")\n ) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[4],\n title: \"Tighten the support cadence\",\n detail:\n \"This goal only has one-off tasks linked to it. Consider adding a recurring habit or routine if progress should stay continuous.\",\n definitionId: null,\n occurrenceId: null,\n });\n }\n return suggestions.slice(0, 3);\n }\n\n public scoreGoalSimilarity(args: {\n reference: {\n title: string;\n description?: string | null;\n successCriteria?: Record<string, unknown> | null;\n };\n candidate: LifeOpsGoalDefinition;\n }): number {\n return scoreGoalSimilarity(args);\n }\n\n public buildExperienceLoopSuggestions(args: {\n goal: LifeOpsGoalDefinition;\n linkedDefinitions: LifeOpsTaskDefinition[];\n recentCompletions: LifeOpsOccurrenceView[];\n }): LifeOpsGoalExperienceLoopSuggestion[] {\n const suggestions: LifeOpsGoalExperienceLoopSuggestion[] = [];\n const seen = new Set<string>();\n const pushSuggestion = (\n suggestion: LifeOpsGoalExperienceLoopSuggestion,\n ) => {\n const key = `${suggestion.definitionId ?? \"none\"}:${suggestion.title.toLowerCase()}`;\n if (seen.has(key)) {\n return;\n }\n seen.add(key);\n suggestions.push(suggestion);\n };\n\n for (const completion of args.recentCompletions.slice(0, 2)) {\n pushSuggestion({\n sourceGoalId: args.goal.id,\n definitionId: completion.definitionId,\n title: completion.title,\n detail: `Carry forward \"${completion.title}\" because it was one of the support steps you actually completed when \"${args.goal.title}\" stayed on track.`,\n });\n }\n\n for (const definition of args.linkedDefinitions.slice(0, 3)) {\n pushSuggestion({\n sourceGoalId: args.goal.id,\n definitionId: definition.id,\n title: definition.title,\n detail: `Re-use \"${definition.title}\" if the new goal needs the same support structure that helped \"${args.goal.title}\".`,\n });\n }\n\n return suggestions.slice(0, 3);\n }\n\n public formatLocalHourMinute(\n isoValue: string | null,\n timeZone: string,\n ): string | null {\n if (!isoValue) {\n return null;\n }\n const date = new Date(isoValue);\n if (Number.isNaN(date.getTime())) {\n return null;\n }\n const parts = getZonedDateParts(date, timeZone);\n return `${String(parts.hour).padStart(2, \"0\")}:${String(\n parts.minute,\n ).padStart(2, \"0\")}`;\n }\n\n public median(values: number[]): number | null {\n if (values.length === 0) {\n return null;\n }\n const sorted = [...values].sort((left, right) => left - right);\n const middle = Math.floor(sorted.length / 2);\n if (sorted.length % 2 === 1) {\n return sorted[middle];\n }\n return (sorted[middle - 1] + sorted[middle]) / 2;\n }\n\n public async buildGoalSemanticEvidence(args: {\n activeOccurrences: LifeOpsOccurrenceView[];\n goal: LifeOpsGoalDefinition;\n lastActivityAt: string | null;\n linkedDefinitions: LifeOpsTaskDefinition[];\n overdueOccurrences: LifeOpsOccurrenceView[];\n recentCompletions: LifeOpsOccurrenceView[];\n reviewState: LifeOpsGoalDefinition[\"reviewState\"];\n summary: LifeOpsGoalReview[\"summary\"];\n now: Date;\n }): Promise<Record<string, unknown>> {\n const timeZone = resolveDefaultTimeZone();\n const linkedDefinitionSummaries = args.linkedDefinitions\n .slice(0, 8)\n .map((definition) => ({\n id: definition.id,\n kind: definition.kind,\n title: definition.title,\n cadence: definition.cadence,\n status: definition.status,\n }));\n const sleepSignals = (\n await this.listActivitySignals({\n sinceAt: new Date(\n args.now.getTime() - 30 * 24 * 60 * 60 * 1000,\n ).toISOString(),\n limit: 80,\n })\n )\n .filter((signal) => signal.health?.sleep)\n .slice(0, 30);\n const sleepSessions = sleepSignals\n .map((signal) => {\n const sleep = signal.health?.sleep;\n if (!sleep) {\n return null;\n }\n return {\n observedAt: signal.observedAt,\n asleepAt: sleep.asleepAt,\n awakeAt: sleep.awakeAt,\n durationMinutes: sleep.durationMinutes,\n localBedtime: this.formatLocalHourMinute(sleep.asleepAt, timeZone),\n localWakeTime: this.formatLocalHourMinute(sleep.awakeAt, timeZone),\n stage: sleep.stage,\n };\n })\n .filter(\n (session): session is NonNullable<typeof session> => session !== null,\n )\n .slice(0, 14);\n const sleepStartHours = sleepSessions\n .map((session) => {\n const localBedtime = session.localBedtime;\n if (!localBedtime) {\n return null;\n }\n const [hour, minute] = localBedtime.split(\":\").map(Number);\n if (!Number.isFinite(hour) || !Number.isFinite(minute)) {\n return null;\n }\n return hour + minute / 60;\n })\n .filter((value): value is number => value !== null);\n const wakeHours = sleepSessions\n .map((session) => {\n const localWakeTime = session.localWakeTime;\n if (!localWakeTime) {\n return null;\n }\n const [hour, minute] = localWakeTime.split(\":\").map(Number);\n if (!Number.isFinite(hour) || !Number.isFinite(minute)) {\n return null;\n }\n return hour + minute / 60;\n })\n .filter((value): value is number => value !== null);\n const durations = sleepSessions\n .map((session) => session.durationMinutes)\n .filter((value): value is number => typeof value === \"number\");\n return {\n now: args.now.toISOString(),\n timeZone,\n goalGrounding: readGoalGroundingMetadata(args.goal.metadata),\n deterministicSummary: args.summary,\n reviewState: args.reviewState,\n linkedDefinitions: linkedDefinitionSummaries,\n activeOccurrences: args.activeOccurrences\n .slice(0, 8)\n .map((occurrence) => ({\n id: occurrence.id,\n title: occurrence.title,\n dueAt: occurrence.dueAt,\n state: occurrence.state,\n })),\n overdueOccurrences: args.overdueOccurrences\n .slice(0, 8)\n .map((occurrence) => ({\n id: occurrence.id,\n title: occurrence.title,\n dueAt: occurrence.dueAt,\n state: occurrence.state,\n })),\n recentCompletions: args.recentCompletions\n .slice(0, 8)\n .map((occurrence) => ({\n id: occurrence.id,\n title: occurrence.title,\n updatedAt: occurrence.updatedAt,\n })),\n lastActivityAt: args.lastActivityAt,\n sleepSummary: {\n sampleCount: sleepSessions.length,\n typicalBedtimeHour: this.median(sleepStartHours),\n typicalWakeHour: this.median(wakeHours),\n typicalSleepDurationMinutes:\n durations.length > 0\n ? Math.round(\n durations.reduce((sum, value) => sum + value, 0) /\n durations.length,\n )\n : null,\n },\n sleepSessions,\n };\n }\n\n public getCachedSemanticGoalReview(args: {\n goal: LifeOpsGoalDefinition;\n now: Date;\n }) {\n const cached = readGoalSemanticReviewMetadata(args.goal.metadata);\n if (!cached) {\n return null;\n }\n const reviewedAtMs = new Date(cached.reviewedAt).getTime();\n if (!Number.isFinite(reviewedAtMs)) {\n return null;\n }\n if (\n args.now.getTime() - reviewedAtMs >\n GOAL_SEMANTIC_REVIEW_CACHE_TTL_MS\n ) {\n return null;\n }\n return cached;\n }\n\n public async syncComputedGoalReviewState(\n goal: LifeOpsGoalDefinition,\n reviewState: LifeOpsGoalDefinition[\"reviewState\"],\n summary: LifeOpsGoalReview[\"summary\"],\n semanticReview: ReturnType<typeof buildGoalSemanticReviewMetadata> | null,\n now: Date,\n ): Promise<LifeOpsGoalDefinition> {\n const currentSemanticReview = readGoalSemanticReviewMetadata(\n goal.metadata,\n );\n const semanticUnchanged =\n !semanticReview ||\n (currentSemanticReview &&\n semanticReview &&\n currentSemanticReview.reviewedAt === semanticReview.reviewedAt &&\n currentSemanticReview.reviewState === semanticReview.reviewState &&\n currentSemanticReview.explanation === semanticReview.explanation);\n if (goal.reviewState === reviewState && semanticUnchanged) {\n return goal;\n }\n const mergedMetadata = mergeMetadata(goal.metadata, {\n computedGoalReview: {\n reviewedAt: now.toISOString(),\n reviewState,\n summary,\n },\n });\n const nextGoal: LifeOpsGoalDefinition = {\n ...goal,\n reviewState,\n metadata: semanticReview\n ? mergeGoalSemanticReviewMetadata(mergedMetadata, semanticReview)\n : mergedMetadata,\n updatedAt: now.toISOString(),\n };\n await this.repository.updateGoal(nextGoal);\n await this.repository.createAuditEvent(\n createLifeOpsAuditEvent({\n agentId: this.agentId(),\n eventType: \"goal_reviewed\",\n ownerType: \"goal\",\n ownerId: goal.id,\n reason: \"goal review recomputed\",\n inputs: {\n previousReviewState: goal.reviewState,\n },\n decision: {\n reviewState,\n summary,\n },\n actor: \"agent\",\n }),\n );\n return nextGoal;\n }\n\n public async buildGoalReview(\n goalRecord: LifeOpsGoalRecord,\n now: Date,\n options: { allowSemanticEvaluation?: boolean } = {},\n ): Promise<LifeOpsGoalReview> {\n const linkedDefinitions =\n await this.collectLinkedDefinitionsForGoal(goalRecord);\n const allOccurrenceViews =\n await this.collectOccurrenceViewsForDefinitions(linkedDefinitions);\n const lookbackStart = new Date(\n now.getTime() - GOAL_REVIEW_LOOKBACK_DAYS * 24 * 60 * 60 * 1000,\n );\n const activeOccurrences = allOccurrenceViews.filter(\n (occurrence) =>\n occurrence.state === \"visible\" || occurrence.state === \"snoozed\",\n );\n const overdueOccurrences = activeOccurrences.filter((occurrence) => {\n if (!occurrence.dueAt) {\n return false;\n }\n return new Date(occurrence.dueAt).getTime() < now.getTime();\n });\n const recentCompletions = allOccurrenceViews.filter(\n (occurrence) =>\n occurrence.state === \"completed\" &&\n new Date(occurrence.updatedAt).getTime() >= lookbackStart.getTime(),\n );\n const lastActivityAt = allOccurrenceViews.reduce<string | null>(\n (latest, occurrence) => {\n const currentTime = new Date(occurrence.updatedAt).getTime();\n if (!Number.isFinite(currentTime)) {\n return latest;\n }\n if (!latest) {\n return occurrence.updatedAt;\n }\n return currentTime > new Date(latest).getTime()\n ? occurrence.updatedAt\n : latest;\n },\n null,\n );\n const derivedReviewState = this.deriveGoalReviewState(\n goalRecord.goal,\n linkedDefinitions,\n activeOccurrences,\n overdueOccurrences,\n recentCompletions,\n lastActivityAt,\n now,\n );\n const summary: LifeOpsGoalReview[\"summary\"] = {\n linkedDefinitionCount: linkedDefinitions.length,\n activeOccurrenceCount: activeOccurrences.length,\n overdueOccurrenceCount: overdueOccurrences.length,\n completedLast7Days: recentCompletions.length,\n lastActivityAt,\n reviewState: derivedReviewState,\n explanation: this.buildGoalReviewExplanation({\n goal: goalRecord.goal,\n linkedDefinitionCount: linkedDefinitions.length,\n activeOccurrenceCount: activeOccurrences.length,\n overdueOccurrenceCount: overdueOccurrences.length,\n completedLast7Days: recentCompletions.length,\n reviewState: derivedReviewState,\n lastActivityAt,\n }),\n };\n const cachedSemanticReview = this.getCachedSemanticGoalReview({\n goal: goalRecord.goal,\n now,\n });\n const semanticEvidence = readGoalGroundingMetadata(\n goalRecord.goal.metadata,\n )\n ? await this.buildGoalSemanticEvidence({\n activeOccurrences,\n goal: goalRecord.goal,\n lastActivityAt,\n linkedDefinitions,\n overdueOccurrences,\n recentCompletions,\n reviewState: derivedReviewState,\n summary,\n now,\n })\n : null;\n const semanticReview =\n cachedSemanticReview ??\n (options.allowSemanticEvaluation && semanticEvidence\n ? await evaluateGoalProgressWithLlm({\n runtime: this.runtime,\n evidence: semanticEvidence,\n goal: goalRecord.goal,\n nowIso: now.toISOString(),\n })\n : null);\n const effectiveReviewState =\n semanticReview?.reviewState ?? derivedReviewState;\n const effectiveSummary: LifeOpsGoalReview[\"summary\"] = {\n ...summary,\n reviewState: effectiveReviewState,\n explanation: semanticReview?.explanation ?? summary.explanation,\n progressScore: semanticReview?.progressScore ?? null,\n confidence: semanticReview?.confidence ?? null,\n evidenceSummary: semanticReview?.evidenceSummary ?? null,\n missingEvidence: semanticReview?.missingEvidence ?? [],\n groundingState:\n readGoalGroundingMetadata(goalRecord.goal.metadata)?.groundingState ??\n null,\n groundingSummary:\n readGoalGroundingMetadata(goalRecord.goal.metadata)?.summary ?? null,\n semanticReviewedAt: semanticReview?.reviewedAt ?? null,\n };\n const goal = await this.syncComputedGoalReviewState(\n goalRecord.goal,\n effectiveReviewState,\n effectiveSummary,\n semanticReview,\n now,\n );\n const suggestions = semanticReview?.suggestions.length\n ? semanticReview.suggestions.map((suggestion) => ({\n kind:\n (suggestion.kind as LifeOpsGoalSupportSuggestion[\"kind\"]) ??\n \"review_progress\",\n title: suggestion.title,\n detail: suggestion.detail,\n definitionId: null,\n occurrenceId: null,\n }))\n : this.buildGoalSupportSuggestions({\n goal,\n linkedDefinitions,\n activeOccurrences,\n overdueOccurrences,\n recentCompletions,\n });\n return {\n goal,\n links: goalRecord.links,\n linkedDefinitions,\n activeOccurrences,\n overdueOccurrences,\n recentCompletions,\n suggestions,\n audits: await this.repository.listAuditEvents(\n this.agentId(),\n \"goal\",\n goal.id,\n ),\n summary: {\n ...effectiveSummary,\n reviewState: goal.reviewState,\n },\n };\n }\n\n async reviewGoal(\n goalId: string,\n now = new Date(),\n ): Promise<LifeOpsGoalReview> {\n const goalRecord = await this.getGoalRecord(goalId);\n return this.buildGoalReview(goalRecord, now, {\n allowSemanticEvaluation: true,\n });\n }\n\n async buildGoalExperienceLoop(\n reference: {\n goalId?: string | null;\n title: string;\n description?: string | null;\n successCriteria?: Record<string, unknown> | null;\n },\n now = new Date(),\n ): Promise<LifeOpsGoalExperienceLoop> {\n const goalRecords = await this.listGoals();\n const matches: Array<\n LifeOpsGoalExperienceLoopMatch & { readonly scoreSort: number }\n > = [];\n for (const record of goalRecords) {\n if (record.goal.id === reference.goalId) {\n continue;\n }\n if (record.goal.status !== \"satisfied\") {\n continue;\n }\n const score = this.scoreGoalSimilarity({\n reference,\n candidate: record.goal,\n });\n if (score < 0.34) {\n continue;\n }\n const review = await this.buildGoalReview(record, now, {\n allowSemanticEvaluation: false,\n });\n matches.push({\n goalId: review.goal.id,\n title: review.goal.title,\n description: review.goal.description,\n score: Number(score.toFixed(3)),\n scoreSort: score,\n status: review.goal.status,\n reviewState: review.summary.reviewState,\n linkedDefinitionCount: review.summary.linkedDefinitionCount,\n completedLast7Days: review.summary.completedLast7Days,\n lastActivityAt: review.summary.lastActivityAt,\n explanation: review.summary.explanation,\n carryForwardSuggestions: this.buildExperienceLoopSuggestions({\n goal: review.goal,\n linkedDefinitions: review.linkedDefinitions,\n recentCompletions: review.recentCompletions,\n }),\n });\n }\n\n matches.sort((left, right) => right.scoreSort - left.scoreSort);\n const similarGoals = matches\n .slice(0, 3)\n .map(({ scoreSort: _scoreSort, ...match }) => match);\n const carryForwardSeen = new Set<string>();\n const suggestedCarryForward: LifeOpsGoalExperienceLoopSuggestion[] = [];\n for (const match of similarGoals) {\n for (const suggestion of match.carryForwardSuggestions) {\n const key = `${suggestion.sourceGoalId}:${suggestion.definitionId ?? \"none\"}:${suggestion.title.toLowerCase()}`;\n if (carryForwardSeen.has(key)) {\n continue;\n }\n carryForwardSeen.add(key);\n suggestedCarryForward.push(suggestion);\n }\n }\n const topMatch = similarGoals[0] ?? null;\n\n return {\n referenceGoalId: reference.goalId ?? null,\n referenceTitle: reference.title,\n similarGoals,\n suggestedCarryForward: suggestedCarryForward.slice(0, 4),\n summary: topMatch\n ? `A similar completed goal, \"${topMatch.title}\", is the best carry-forward reference for \"${reference.title}\".`\n : null,\n };\n }\n\n async reviewGoalsForWeek(\n now = new Date(),\n ): Promise<LifeOpsWeeklyGoalReview> {\n const goals = (await this.repository.listGoals(this.agentId())).filter(\n (goal) => goal.status === \"active\",\n );\n const reviews: LifeOpsGoalReview[] = [];\n for (const goal of goals) {\n reviews.push(\n await this.buildGoalReview(\n {\n goal,\n links: await this.repository.listGoalLinksForGoal(\n this.agentId(),\n goal.id,\n ),\n },\n now,\n { allowSemanticEvaluation: false },\n ),\n );\n }\n const onTrack = reviews.filter(\n (review) => review.summary.reviewState === \"on_track\",\n );\n const atRisk = reviews.filter(\n (review) => review.summary.reviewState === \"at_risk\",\n );\n const needsAttention = reviews.filter(\n (review) => review.summary.reviewState === \"needs_attention\",\n );\n const idle = reviews.filter(\n (review) => review.summary.reviewState === \"idle\",\n );\n\n return {\n generatedAt: now.toISOString(),\n reviewWindow: \"this_week\",\n summary: {\n totalGoals: reviews.length,\n onTrackCount: onTrack.length,\n atRiskCount: atRisk.length,\n needsAttentionCount: needsAttention.length,\n idleCount: idle.length,\n },\n onTrack,\n atRisk,\n needsAttention,\n idle,\n };\n }\n\n async explainOccurrence(\n occurrenceId: string,\n ): Promise<LifeOpsOccurrenceExplanation> {\n const occurrence = await this.repository.getOccurrenceView(\n this.agentId(),\n occurrenceId,\n );\n if (!occurrence) {\n fail(404, \"life-ops occurrence not found\");\n }\n const definitionRecord = await this.getDefinitionRecord(\n occurrence.definitionId,\n );\n const linkedGoal = definitionRecord.definition.goalId\n ? await this.getGoalRecord(definitionRecord.definition.goalId)\n : null;\n const reminderInspection = await this.inspectReminder(\n \"occurrence\",\n occurrence.id,\n );\n const definitionAudits = await this.repository.listAuditEvents(\n this.agentId(),\n \"definition\",\n definitionRecord.definition.id,\n );\n const lastReminderAttempt = reminderInspection.attempts[0] ?? null;\n const lastOccurrenceAudit = reminderInspection.audits[0] ?? null;\n const whyVisible =\n occurrence.state === \"snoozed\" && occurrence.snoozedUntil\n ? `This item is still visible because it was snoozed until ${occurrence.snoozedUntil}.`\n : occurrence.dueAt\n ? `This item is visible because it is due at ${occurrence.dueAt} and its current relevance window started at ${occurrence.relevanceStartAt}.`\n : `This item is visible because its current relevance window started at ${occurrence.relevanceStartAt}.`;\n return {\n occurrence,\n definition: definitionRecord.definition,\n definitionPerformance: definitionRecord.performance,\n reminderPlan: definitionRecord.reminderPlan,\n linkedGoal,\n reminderInspection,\n definitionAudits,\n summary: {\n originalIntent: definitionRecord.definition.originalIntent,\n source: definitionRecord.definition.source,\n whyVisible,\n lastReminderAt: lastReminderAttempt?.attemptedAt ?? null,\n lastReminderChannel: lastReminderAttempt?.channel,\n lastReminderOutcome: lastReminderAttempt?.outcome,\n lastActionSummary: lastOccurrenceAudit\n ? `${lastOccurrenceAudit.reason} at ${lastOccurrenceAudit.createdAt}`\n : null,\n },\n };\n }\n\n public async refreshGoalReviewStates(\n now: Date,\n ): Promise<LifeOpsGoalDefinition[]> {\n const goals = (await this.repository.listGoals(this.agentId())).filter(\n (goal) => goal.status === \"active\",\n );\n const refreshed: LifeOpsGoalDefinition[] = [];\n for (const goal of goals) {\n const review = await this.buildGoalReview(\n {\n goal,\n links: await this.repository.listGoalLinksForGoal(\n this.agentId(),\n goal.id,\n ),\n },\n now,\n { allowSemanticEvaluation: false },\n );\n refreshed.push(review.goal);\n }\n return refreshed;\n }\n\n async getOverview(now = new Date()): Promise<LifeOpsOverview> {\n const schedule = await this.refreshEffectiveScheduleState({\n timezone: resolveDefaultTimeZone(),\n now,\n });\n const definitions = await this.repository.listActiveDefinitions(\n this.agentId(),\n );\n for (const definition of definitions) {\n await this.refreshDefinitionOccurrences(definition, now);\n }\n const definitionsById = new Map(\n definitions.map((definition) => [definition.id, definition]),\n );\n const horizon = addMinutes(now, OVERVIEW_HORIZON_MINUTES).toISOString();\n const overviewOccurrences =\n await this.repository.listOccurrenceViewsForOverview(\n this.agentId(),\n horizon,\n );\n const reminderPlans = await this.repository.listReminderPlansForOwners(\n this.agentId(),\n \"definition\",\n overviewOccurrences.map((occurrence) => occurrence.definitionId),\n );\n const policies = await this.repository.listChannelPolicies(\n this.agentId(),\n );\n const definitionPreferencesById = new Map<\n string,\n LifeOpsReminderPreference\n >();\n const plansByDefinitionId = new Map<string, LifeOpsReminderPlan>();\n for (const plan of reminderPlans) {\n const definition = definitionsById.get(plan.ownerId) ?? null;\n const preference = this.buildReminderPreferenceResponse(\n definition,\n policies,\n );\n definitionPreferencesById.set(plan.ownerId, preference);\n const effectivePlan = this.resolveEffectiveReminderPlan(\n plan,\n preference,\n );\n if (effectivePlan) {\n plansByDefinitionId.set(plan.ownerId, effectivePlan);\n }\n }\n const calendarEvents = await this.repository.listCalendarEvents(\n this.agentId(),\n \"google\",\n now.toISOString(),\n addMinutes(now, OVERVIEW_HORIZON_MINUTES).toISOString(),\n );\n const calendarReminderPlans =\n await this.repository.listReminderPlansForOwners(\n this.agentId(),\n \"calendar_event\",\n calendarEvents.map((event) => event.id),\n );\n const globalReminderPreference = this.buildReminderPreferenceResponse(\n null,\n policies,\n );\n const occurrenceUrgencies = new Map<string, LifeOpsReminderUrgency>();\n for (const occurrence of overviewOccurrences) {\n occurrenceUrgencies.set(\n occurrence.id,\n typeof occurrence.metadata.urgency === \"string\"\n ? normalizeReminderUrgency(occurrence.metadata.urgency)\n : priorityToUrgency(occurrence.priority),\n );\n }\n const eventUrgencies = new Map<string, LifeOpsReminderUrgency>();\n for (const event of calendarEvents) {\n eventUrgencies.set(\n event.id,\n typeof event.metadata.urgency === \"string\"\n ? normalizeReminderUrgency(event.metadata.urgency)\n : \"medium\",\n );\n }\n const plansByEventId = new Map<string, LifeOpsReminderPlan>();\n for (const plan of calendarReminderPlans) {\n const effectivePlan = this.resolveEffectiveReminderPlan(\n plan,\n globalReminderPreference,\n );\n if (effectivePlan) {\n plansByEventId.set(plan.ownerId, effectivePlan);\n }\n }\n const goals = await this.refreshGoalReviewStates(now);\n const allReminders = [\n ...buildActiveReminders(\n overviewOccurrences,\n plansByDefinitionId,\n now,\n ).filter((reminder) =>\n shouldDeliverReminderForIntensity(\n definitionPreferencesById.get(reminder.definitionId ?? \"\")\n ?.effective?.intensity ??\n globalReminderPreference.effective.intensity,\n occurrenceUrgencies.get(reminder.ownerId) ?? \"medium\",\n ),\n ),\n ...buildActiveCalendarEventReminders(\n calendarEvents,\n plansByEventId,\n this.ownerEntityId(),\n now,\n ).filter((reminder) =>\n shouldDeliverReminderForIntensity(\n globalReminderPreference.effective.intensity,\n eventUrgencies.get(reminder.ownerId) ?? \"medium\",\n ),\n ),\n ].sort(\n (left, right) =>\n new Date(left.scheduledFor).getTime() -\n new Date(right.scheduledFor).getTime(),\n );\n const ownerSectionBase = {\n occurrences: selectOverviewOccurrences(\n overviewOccurrences.filter(\n (occurrence) => occurrence.subjectType === \"owner\",\n ),\n ),\n goals: goals.filter((goal) => goal.subjectType === \"owner\"),\n reminders: allReminders\n .filter((reminder) => reminder.subjectType === \"owner\")\n .slice(0, MAX_OVERVIEW_REMINDERS),\n };\n const agentSectionBase = {\n occurrences: selectOverviewOccurrences(\n overviewOccurrences.filter(\n (occurrence) => occurrence.subjectType === \"agent\",\n ),\n ),\n goals: goals.filter((goal) => goal.subjectType === \"agent\"),\n reminders: allReminders\n .filter((reminder) => reminder.subjectType === \"agent\")\n .slice(0, MAX_OVERVIEW_REMINDERS),\n };\n const owner: LifeOpsOverviewSection = {\n ...ownerSectionBase,\n summary: summarizeOverviewSection(ownerSectionBase, now),\n };\n const agentOps: LifeOpsOverviewSection = {\n ...agentSectionBase,\n summary: summarizeOverviewSection(agentSectionBase, now),\n };\n return {\n occurrences: owner.occurrences,\n goals: owner.goals,\n reminders: owner.reminders,\n summary: owner.summary,\n owner,\n agentOps,\n schedule,\n };\n }\n\n async listChannelPolicies(): Promise<LifeOpsChannelPolicy[]> {\n return this.repository.listChannelPolicies(this.agentId());\n }\n }\n\n return LifeOpsGoalServiceMixin as unknown as MixinClass<\n TBase,\n LifeOpsGoalService\n >;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DisconnectLifeOpsGoogleConnectorRequest, LifeOpsConnectorMode, LifeOpsConnectorSide, LifeOpsGoogleConnectorStatus, StartLifeOpsGoogleConnectorRequest, StartLifeOpsGoogleConnectorResponse } from "../contracts/index.js";
|
|
2
|
+
import type { Constructor, LifeOpsServiceBase, MixinClass } from "./service-mixin-core.js";
|
|
3
|
+
export interface LifeOpsGoogleService {
|
|
4
|
+
getGoogleConnectorStatus(requestUrl: URL, requestedMode?: LifeOpsConnectorMode, requestedSide?: LifeOpsConnectorSide, grantId?: string): Promise<LifeOpsGoogleConnectorStatus>;
|
|
5
|
+
getGoogleConnectorAccounts(requestUrl: URL, requestedSide?: LifeOpsConnectorSide): Promise<LifeOpsGoogleConnectorStatus[]>;
|
|
6
|
+
selectGoogleConnectorMode(requestUrl: URL, preferredModeInput: LifeOpsConnectorMode | undefined, requestedSide?: LifeOpsConnectorSide): Promise<LifeOpsGoogleConnectorStatus>;
|
|
7
|
+
startGoogleConnector(request: StartLifeOpsGoogleConnectorRequest, requestUrl: URL): Promise<StartLifeOpsGoogleConnectorResponse>;
|
|
8
|
+
completeGoogleConnectorCallback(callbackUrl: URL): Promise<LifeOpsGoogleConnectorStatus>;
|
|
9
|
+
disconnectGoogleConnector(request: DisconnectLifeOpsGoogleConnectorRequest, requestUrl: URL): Promise<LifeOpsGoogleConnectorStatus>;
|
|
10
|
+
}
|
|
11
|
+
/** @internal */
|
|
12
|
+
export declare function withGoogle<TBase extends Constructor<LifeOpsServiceBase>>(Base: TBase): MixinClass<TBase, LifeOpsGoogleService>;
|
|
13
|
+
//# sourceMappingURL=service-mixin-google.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-mixin-google.d.ts","sourceRoot":"","sources":["../../src/lifeops/service-mixin-google.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,uCAAuC,EAEvC,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,kCAAkC,EAClC,mCAAmC,EACpC,MAAM,uBAAuB,CAAC;AAY/B,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,UAAU,EACX,MAAM,yBAAyB,CAAC;AAQjC,MAAM,WAAW,oBAAoB;IACnC,wBAAwB,CACtB,UAAU,EAAE,GAAG,EACf,aAAa,CAAC,EAAE,oBAAoB,EACpC,aAAa,CAAC,EAAE,oBAAoB,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,0BAA0B,CACxB,UAAU,EAAE,GAAG,EACf,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAC3C,yBAAyB,CACvB,UAAU,EAAE,GAAG,EACf,kBAAkB,EAAE,oBAAoB,GAAG,SAAS,EACpD,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,oBAAoB,CAClB,OAAO,EAAE,kCAAkC,EAC3C,UAAU,EAAE,GAAG,GACd,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAChD,+BAA+B,CAC7B,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,yBAAyB,CACvB,OAAO,EAAE,uCAAuC,EAChD,UAAU,EAAE,GAAG,GACd,OAAO,CAAC,4BAA4B,CAAC,CAAC;CAC1C;AA4DD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,SAAS,WAAW,CAAC,kBAAkB,CAAC,EACtE,IAAI,EAAE,KAAK,GACV,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAoazC"}
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getConnectorAccountManager
|
|
3
|
+
} from "@elizaos/core";
|
|
4
|
+
import {
|
|
5
|
+
disconnectedGoogleStatus,
|
|
6
|
+
googleAccountIdFromGrantId,
|
|
7
|
+
googleGrantFromAccount,
|
|
8
|
+
googleGrantIdForAccount,
|
|
9
|
+
googleScopesForAccount,
|
|
10
|
+
googleSideForAccount,
|
|
11
|
+
googleStatusFromAccount,
|
|
12
|
+
listGoogleConnectorAccounts,
|
|
13
|
+
resolveGoogleConnectorAccount
|
|
14
|
+
} from "./google-plugin-delegates.js";
|
|
15
|
+
import { fail, normalizeOptionalString } from "./service-normalize.js";
|
|
16
|
+
import {
|
|
17
|
+
normalizeGoogleCapabilityRequest,
|
|
18
|
+
normalizeOptionalConnectorMode,
|
|
19
|
+
normalizeOptionalConnectorSide
|
|
20
|
+
} from "./service-normalize-connector.js";
|
|
21
|
+
function roleForSide(side) {
|
|
22
|
+
return side === "agent" ? "AGENT" : "OWNER";
|
|
23
|
+
}
|
|
24
|
+
function sideFromMetadata(value) {
|
|
25
|
+
return value === "agent" ? "agent" : "owner";
|
|
26
|
+
}
|
|
27
|
+
function requestedScopesForCapabilities(capabilities) {
|
|
28
|
+
if (!capabilities || capabilities.length === 0) {
|
|
29
|
+
return void 0;
|
|
30
|
+
}
|
|
31
|
+
return googleScopesForAccount(
|
|
32
|
+
{
|
|
33
|
+
id: "requested",
|
|
34
|
+
provider: "google",
|
|
35
|
+
role: "OWNER",
|
|
36
|
+
purpose: [],
|
|
37
|
+
accessGate: "owner_binding",
|
|
38
|
+
status: "pending",
|
|
39
|
+
createdAt: Date.now(),
|
|
40
|
+
updatedAt: Date.now(),
|
|
41
|
+
metadata: { grantedCapabilities: [...capabilities] }
|
|
42
|
+
},
|
|
43
|
+
capabilities
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
function assertLocalMode(mode) {
|
|
47
|
+
if (mode && mode !== "local") {
|
|
48
|
+
fail(
|
|
49
|
+
410,
|
|
50
|
+
"LifeOps no longer manages cloud or legacy Google modes. Use @elizaos/plugin-google connector accounts."
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function googlePluginUnavailableStatus(side) {
|
|
55
|
+
return {
|
|
56
|
+
...disconnectedGoogleStatus(side),
|
|
57
|
+
configured: false,
|
|
58
|
+
reason: "config_missing",
|
|
59
|
+
degradations: [
|
|
60
|
+
{
|
|
61
|
+
axis: "disconnected",
|
|
62
|
+
code: "google_plugin_unavailable",
|
|
63
|
+
message: "@elizaos/plugin-google is required for Google accounts. LifeOps no longer stores Google OAuth tokens directly.",
|
|
64
|
+
retryable: true
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function withGoogle(Base) {
|
|
70
|
+
const GoogleBase = Base;
|
|
71
|
+
class LifeOpsGoogleServiceMixin extends GoogleBase {
|
|
72
|
+
googleConnectorManager() {
|
|
73
|
+
try {
|
|
74
|
+
return getConnectorAccountManager(this.runtime);
|
|
75
|
+
} catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
googleAccountStatus(account) {
|
|
80
|
+
return googleStatusFromAccount({
|
|
81
|
+
account,
|
|
82
|
+
agentId: this.agentId(),
|
|
83
|
+
defaultMode: "local",
|
|
84
|
+
availableModes: ["local"]
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async withGoogleGrantOperation(_grant, operation) {
|
|
88
|
+
return operation();
|
|
89
|
+
}
|
|
90
|
+
async runManagedGoogleOperation(_grant, _operation) {
|
|
91
|
+
fail(
|
|
92
|
+
410,
|
|
93
|
+
"Cloud-managed Google operations were removed from LifeOps. Use @elizaos/plugin-google connector accounts."
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
async clearGoogleConnectorData(side) {
|
|
97
|
+
const calendarEvents = await this.repository.listCalendarEvents(
|
|
98
|
+
this.agentId(),
|
|
99
|
+
"google",
|
|
100
|
+
void 0,
|
|
101
|
+
void 0,
|
|
102
|
+
side
|
|
103
|
+
);
|
|
104
|
+
await this.deleteCalendarReminderPlansForEvents(
|
|
105
|
+
calendarEvents.map((event) => event.id)
|
|
106
|
+
);
|
|
107
|
+
await this.repository.deleteCalendarEventsForProvider(
|
|
108
|
+
this.agentId(),
|
|
109
|
+
"google",
|
|
110
|
+
void 0,
|
|
111
|
+
side
|
|
112
|
+
);
|
|
113
|
+
await this.repository.deleteCalendarSyncState(
|
|
114
|
+
this.agentId(),
|
|
115
|
+
"google",
|
|
116
|
+
void 0,
|
|
117
|
+
side
|
|
118
|
+
);
|
|
119
|
+
await this.repository.deleteGmailMessagesForProvider(
|
|
120
|
+
this.agentId(),
|
|
121
|
+
"google",
|
|
122
|
+
side
|
|
123
|
+
);
|
|
124
|
+
await this.repository.deleteGmailSpamReviewItemsForProvider(
|
|
125
|
+
this.agentId(),
|
|
126
|
+
"google",
|
|
127
|
+
side
|
|
128
|
+
);
|
|
129
|
+
await this.repository.deleteGmailSyncState(
|
|
130
|
+
this.agentId(),
|
|
131
|
+
"google",
|
|
132
|
+
void 0,
|
|
133
|
+
side
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
async clearGoogleGrantData(grant) {
|
|
137
|
+
await this.deleteCalendarReminderPlansForEvents(
|
|
138
|
+
(await this.repository.listCalendarEvents(
|
|
139
|
+
this.agentId(),
|
|
140
|
+
"google",
|
|
141
|
+
void 0,
|
|
142
|
+
void 0,
|
|
143
|
+
grant.side
|
|
144
|
+
)).filter((event) => event.grantId === grant.id).map((event) => event.id)
|
|
145
|
+
);
|
|
146
|
+
await this.repository.deleteCalendarEventsForProvider(
|
|
147
|
+
this.agentId(),
|
|
148
|
+
"google",
|
|
149
|
+
grant.id,
|
|
150
|
+
grant.side
|
|
151
|
+
);
|
|
152
|
+
await this.repository.deleteCalendarSyncState(
|
|
153
|
+
this.agentId(),
|
|
154
|
+
"google",
|
|
155
|
+
grant.id,
|
|
156
|
+
grant.side
|
|
157
|
+
);
|
|
158
|
+
await this.repository.deleteGmailMessagesForProvider(
|
|
159
|
+
this.agentId(),
|
|
160
|
+
"google",
|
|
161
|
+
grant.side,
|
|
162
|
+
grant.id
|
|
163
|
+
);
|
|
164
|
+
await this.repository.deleteGmailSpamReviewItemsForProvider(
|
|
165
|
+
this.agentId(),
|
|
166
|
+
"google",
|
|
167
|
+
grant.side,
|
|
168
|
+
grant.id
|
|
169
|
+
);
|
|
170
|
+
await this.repository.deleteGmailSyncState(
|
|
171
|
+
this.agentId(),
|
|
172
|
+
"google",
|
|
173
|
+
grant.id,
|
|
174
|
+
grant.side
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
async deleteCalendarReminderPlansForEvents(_eventIds) {
|
|
178
|
+
}
|
|
179
|
+
async setPreferredGoogleConnectorMode(_mode, _side) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
async requireGoogleCalendarGrant(requestUrl, requestedMode, requestedSide, grantId) {
|
|
183
|
+
assertLocalMode(normalizeOptionalConnectorMode(requestedMode, "mode"));
|
|
184
|
+
const status = await this.getGoogleConnectorStatus(
|
|
185
|
+
requestUrl,
|
|
186
|
+
"local",
|
|
187
|
+
requestedSide,
|
|
188
|
+
grantId
|
|
189
|
+
);
|
|
190
|
+
const grant = status.grant;
|
|
191
|
+
if (!status.connected || !grant) {
|
|
192
|
+
fail(409, "Google Calendar is not connected.");
|
|
193
|
+
}
|
|
194
|
+
if (!grant.capabilities.includes("google.calendar.read")) {
|
|
195
|
+
fail(403, "Google Calendar read access has not been granted.");
|
|
196
|
+
}
|
|
197
|
+
return grant;
|
|
198
|
+
}
|
|
199
|
+
async requireGoogleCalendarWriteGrant(requestUrl, requestedMode, requestedSide, grantId) {
|
|
200
|
+
const grant = await this.requireGoogleCalendarGrant(
|
|
201
|
+
requestUrl,
|
|
202
|
+
requestedMode,
|
|
203
|
+
requestedSide,
|
|
204
|
+
grantId
|
|
205
|
+
);
|
|
206
|
+
if (!grant.capabilities.includes("google.calendar.write")) {
|
|
207
|
+
fail(403, "Google Calendar write access has not been granted.");
|
|
208
|
+
}
|
|
209
|
+
return grant;
|
|
210
|
+
}
|
|
211
|
+
async requireGoogleGmailGrant(requestUrl, requestedMode, requestedSide, grantId) {
|
|
212
|
+
assertLocalMode(normalizeOptionalConnectorMode(requestedMode, "mode"));
|
|
213
|
+
const status = await this.getGoogleConnectorStatus(
|
|
214
|
+
requestUrl,
|
|
215
|
+
"local",
|
|
216
|
+
requestedSide,
|
|
217
|
+
grantId
|
|
218
|
+
);
|
|
219
|
+
const grant = status.grant;
|
|
220
|
+
if (!status.connected || !grant) {
|
|
221
|
+
fail(409, "Google Gmail is not connected.");
|
|
222
|
+
}
|
|
223
|
+
if (!grant.capabilities.includes("google.gmail.triage")) {
|
|
224
|
+
fail(403, "Google Gmail triage access has not been granted.");
|
|
225
|
+
}
|
|
226
|
+
return grant;
|
|
227
|
+
}
|
|
228
|
+
async requireGoogleGmailSendGrant(requestUrl, requestedMode, requestedSide, grantId) {
|
|
229
|
+
const grant = await this.requireGoogleGmailGrant(
|
|
230
|
+
requestUrl,
|
|
231
|
+
requestedMode,
|
|
232
|
+
requestedSide,
|
|
233
|
+
grantId
|
|
234
|
+
);
|
|
235
|
+
if (!grant.capabilities.includes("google.gmail.send")) {
|
|
236
|
+
fail(403, "Google Gmail send access has not been granted.");
|
|
237
|
+
}
|
|
238
|
+
return grant;
|
|
239
|
+
}
|
|
240
|
+
async getGoogleConnectorStatus(_requestUrl, requestedMode, requestedSide, grantId) {
|
|
241
|
+
const mode = normalizeOptionalConnectorMode(requestedMode, "mode");
|
|
242
|
+
assertLocalMode(mode);
|
|
243
|
+
const side = normalizeOptionalConnectorSide(requestedSide, "side") ?? "owner";
|
|
244
|
+
const manager = this.googleConnectorManager();
|
|
245
|
+
if (!manager?.getProvider?.("google")) {
|
|
246
|
+
return googlePluginUnavailableStatus(side);
|
|
247
|
+
}
|
|
248
|
+
const account = await resolveGoogleConnectorAccount({
|
|
249
|
+
runtime: this.runtime,
|
|
250
|
+
requestedSide: side,
|
|
251
|
+
grantId
|
|
252
|
+
});
|
|
253
|
+
return account ? this.googleAccountStatus(account) : disconnectedGoogleStatus(side);
|
|
254
|
+
}
|
|
255
|
+
async getGoogleConnectorAccounts(_requestUrl, requestedSide) {
|
|
256
|
+
const side = normalizeOptionalConnectorSide(requestedSide, "side");
|
|
257
|
+
const manager = this.googleConnectorManager();
|
|
258
|
+
if (!manager?.getProvider?.("google")) {
|
|
259
|
+
return side ? [googlePluginUnavailableStatus(side)] : [
|
|
260
|
+
googlePluginUnavailableStatus("owner"),
|
|
261
|
+
googlePluginUnavailableStatus("agent")
|
|
262
|
+
];
|
|
263
|
+
}
|
|
264
|
+
const accounts = await listGoogleConnectorAccounts({
|
|
265
|
+
runtime: this.runtime,
|
|
266
|
+
requestedSide: side
|
|
267
|
+
});
|
|
268
|
+
if (accounts.length === 0) {
|
|
269
|
+
return side ? [disconnectedGoogleStatus(side)] : [];
|
|
270
|
+
}
|
|
271
|
+
return accounts.map((account) => this.googleAccountStatus(account));
|
|
272
|
+
}
|
|
273
|
+
async selectGoogleConnectorMode(requestUrl, preferredModeInput, requestedSide) {
|
|
274
|
+
const preferredMode = normalizeOptionalConnectorMode(
|
|
275
|
+
preferredModeInput,
|
|
276
|
+
"mode"
|
|
277
|
+
);
|
|
278
|
+
assertLocalMode(preferredMode);
|
|
279
|
+
return this.getGoogleConnectorStatus(requestUrl, "local", requestedSide);
|
|
280
|
+
}
|
|
281
|
+
async startGoogleConnector(request, requestUrl) {
|
|
282
|
+
const mode = normalizeOptionalConnectorMode(request.mode, "mode");
|
|
283
|
+
assertLocalMode(mode);
|
|
284
|
+
const requestedSide = normalizeOptionalConnectorSide(request.side, "side") ?? "owner";
|
|
285
|
+
const requestedCapabilities = normalizeGoogleCapabilityRequest(
|
|
286
|
+
request.capabilities
|
|
287
|
+
);
|
|
288
|
+
const manager = this.googleConnectorManager();
|
|
289
|
+
if (!manager?.getProvider?.("google")) {
|
|
290
|
+
fail(
|
|
291
|
+
503,
|
|
292
|
+
"@elizaos/plugin-google is required before starting Google OAuth."
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
const requestedAccountId = googleAccountIdFromGrantId(request.grantId);
|
|
296
|
+
const redirectUri = new URL(
|
|
297
|
+
"/api/connectors/google/oauth/callback",
|
|
298
|
+
requestUrl.origin
|
|
299
|
+
).toString();
|
|
300
|
+
const flow = await manager.startOAuth("google", {
|
|
301
|
+
redirectUri,
|
|
302
|
+
accountId: requestedAccountId ?? void 0,
|
|
303
|
+
scopes: requestedScopesForCapabilities(requestedCapabilities),
|
|
304
|
+
metadata: {
|
|
305
|
+
lifeops: true,
|
|
306
|
+
side: requestedSide,
|
|
307
|
+
role: roleForSide(requestedSide),
|
|
308
|
+
requestedRole: roleForSide(requestedSide),
|
|
309
|
+
requestedCapabilities,
|
|
310
|
+
privacy: "owner_only",
|
|
311
|
+
redirectUrl: normalizeOptionalString(request.redirectUrl)
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
return {
|
|
315
|
+
provider: "google",
|
|
316
|
+
side: requestedSide,
|
|
317
|
+
mode: "local",
|
|
318
|
+
requestedCapabilities: requestedCapabilities ?? [],
|
|
319
|
+
redirectUri: flow.redirectUri ?? redirectUri,
|
|
320
|
+
authUrl: flow.authUrl ?? ""
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
async completeGoogleConnectorCallback(callbackUrl) {
|
|
324
|
+
const manager = this.googleConnectorManager();
|
|
325
|
+
if (!manager?.getProvider?.("google")) {
|
|
326
|
+
fail(
|
|
327
|
+
503,
|
|
328
|
+
"@elizaos/plugin-google is required before completing Google OAuth."
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
const state = callbackUrl.searchParams.get("state") ?? "";
|
|
332
|
+
const completed = await manager.completeOAuth("google", {
|
|
333
|
+
state,
|
|
334
|
+
code: callbackUrl.searchParams.get("code") ?? void 0,
|
|
335
|
+
error: callbackUrl.searchParams.get("error") ?? void 0,
|
|
336
|
+
errorDescription: callbackUrl.searchParams.get("error_description") ?? void 0,
|
|
337
|
+
query: Object.fromEntries(callbackUrl.searchParams.entries())
|
|
338
|
+
});
|
|
339
|
+
const side = sideFromMetadata(completed.flow.metadata?.side);
|
|
340
|
+
const accountId = completed.account?.id ?? completed.flow.accountId ?? void 0;
|
|
341
|
+
return this.getGoogleConnectorStatus(
|
|
342
|
+
callbackUrl,
|
|
343
|
+
"local",
|
|
344
|
+
side,
|
|
345
|
+
accountId ? googleGrantIdForAccount(accountId) : void 0
|
|
346
|
+
);
|
|
347
|
+
}
|
|
348
|
+
async disconnectGoogleConnector(request, requestUrl) {
|
|
349
|
+
const mode = normalizeOptionalConnectorMode(request.mode, "mode");
|
|
350
|
+
assertLocalMode(mode);
|
|
351
|
+
const side = normalizeOptionalConnectorSide(request.side, "side");
|
|
352
|
+
const manager = this.googleConnectorManager();
|
|
353
|
+
if (!manager?.getProvider?.("google")) {
|
|
354
|
+
fail(
|
|
355
|
+
503,
|
|
356
|
+
"@elizaos/plugin-google is required before disconnecting Google accounts."
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
const requestedGrantId = normalizeOptionalString(request.grantId);
|
|
360
|
+
const account = await resolveGoogleConnectorAccount({
|
|
361
|
+
runtime: this.runtime,
|
|
362
|
+
requestedSide: side,
|
|
363
|
+
grantId: requestedGrantId
|
|
364
|
+
});
|
|
365
|
+
if (!account) {
|
|
366
|
+
if (requestedGrantId) {
|
|
367
|
+
fail(404, "Google connector account not found.");
|
|
368
|
+
}
|
|
369
|
+
return this.getGoogleConnectorStatus(requestUrl, "local", side);
|
|
370
|
+
}
|
|
371
|
+
const grant = googleGrantFromAccount({
|
|
372
|
+
account,
|
|
373
|
+
agentId: this.agentId()
|
|
374
|
+
});
|
|
375
|
+
await manager.deleteAccount("google", account.id);
|
|
376
|
+
await this.clearGoogleGrantData(grant);
|
|
377
|
+
await this.recordConnectorAudit(
|
|
378
|
+
"google:connector-account",
|
|
379
|
+
"google connector account disconnected",
|
|
380
|
+
{
|
|
381
|
+
connectorAccountId: account.id,
|
|
382
|
+
side: googleSideForAccount(account)
|
|
383
|
+
},
|
|
384
|
+
{ disconnected: true }
|
|
385
|
+
);
|
|
386
|
+
return this.getGoogleConnectorStatus(
|
|
387
|
+
requestUrl,
|
|
388
|
+
"local",
|
|
389
|
+
side ?? googleSideForAccount(account)
|
|
390
|
+
);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return LifeOpsGoogleServiceMixin;
|
|
394
|
+
}
|
|
395
|
+
export {
|
|
396
|
+
withGoogle
|
|
397
|
+
};
|
|
398
|
+
//# sourceMappingURL=service-mixin-google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/service-mixin-google.ts"],"sourcesContent":["import {\n type ConnectorAccount,\n getConnectorAccountManager,\n} from \"@elizaos/core\";\nimport type {\n DisconnectLifeOpsGoogleConnectorRequest,\n LifeOpsConnectorGrant,\n LifeOpsConnectorMode,\n LifeOpsConnectorSide,\n LifeOpsGoogleConnectorStatus,\n StartLifeOpsGoogleConnectorRequest,\n StartLifeOpsGoogleConnectorResponse,\n} from \"../contracts/index.js\";\nimport {\n disconnectedGoogleStatus,\n googleAccountIdFromGrantId,\n googleGrantFromAccount,\n googleGrantIdForAccount,\n googleScopesForAccount,\n googleSideForAccount,\n googleStatusFromAccount,\n listGoogleConnectorAccounts,\n resolveGoogleConnectorAccount,\n} from \"./google-plugin-delegates.js\";\nimport type {\n Constructor,\n LifeOpsServiceBase,\n MixinClass,\n} from \"./service-mixin-core.js\";\nimport { fail, normalizeOptionalString } from \"./service-normalize.js\";\nimport {\n normalizeGoogleCapabilityRequest,\n normalizeOptionalConnectorMode,\n normalizeOptionalConnectorSide,\n} from \"./service-normalize-connector.js\";\n\nexport interface LifeOpsGoogleService {\n getGoogleConnectorStatus(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n getGoogleConnectorAccounts(\n requestUrl: URL,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus[]>;\n selectGoogleConnectorMode(\n requestUrl: URL,\n preferredModeInput: LifeOpsConnectorMode | undefined,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n startGoogleConnector(\n request: StartLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<StartLifeOpsGoogleConnectorResponse>;\n completeGoogleConnectorCallback(\n callbackUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n disconnectGoogleConnector(\n request: DisconnectLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n}\n\nfunction roleForSide(side: LifeOpsConnectorSide): \"OWNER\" | \"AGENT\" {\n return side === \"agent\" ? \"AGENT\" : \"OWNER\";\n}\n\nfunction sideFromMetadata(value: unknown): LifeOpsConnectorSide {\n return value === \"agent\" ? \"agent\" : \"owner\";\n}\n\nfunction requestedScopesForCapabilities(\n capabilities: readonly string[] | undefined,\n): string[] | undefined {\n if (!capabilities || capabilities.length === 0) {\n return undefined;\n }\n return googleScopesForAccount(\n {\n id: \"requested\",\n provider: \"google\",\n role: \"OWNER\",\n purpose: [],\n accessGate: \"owner_binding\",\n status: \"pending\",\n createdAt: Date.now(),\n updatedAt: Date.now(),\n metadata: { grantedCapabilities: [...capabilities] },\n } as ConnectorAccount,\n capabilities as never,\n );\n}\n\nfunction assertLocalMode(mode?: LifeOpsConnectorMode): void {\n if (mode && mode !== \"local\") {\n fail(\n 410,\n \"LifeOps no longer manages cloud or legacy Google modes. Use @elizaos/plugin-google connector accounts.\",\n );\n }\n}\n\nfunction googlePluginUnavailableStatus(\n side: LifeOpsConnectorSide,\n): LifeOpsGoogleConnectorStatus {\n return {\n ...disconnectedGoogleStatus(side),\n configured: false,\n reason: \"config_missing\",\n degradations: [\n {\n axis: \"disconnected\",\n code: \"google_plugin_unavailable\",\n message:\n \"@elizaos/plugin-google is required for Google accounts. LifeOps no longer stores Google OAuth tokens directly.\",\n retryable: true,\n },\n ],\n };\n}\n\n/** @internal */\nexport function withGoogle<TBase extends Constructor<LifeOpsServiceBase>>(\n Base: TBase,\n): MixinClass<TBase, LifeOpsGoogleService> {\n const GoogleBase = Base as unknown as Constructor<LifeOpsServiceBase>;\n\n class LifeOpsGoogleServiceMixin extends GoogleBase {\n private googleConnectorManager() {\n try {\n return getConnectorAccountManager(this.runtime);\n } catch {\n return null;\n }\n }\n\n private googleAccountStatus(\n account: ConnectorAccount,\n ): LifeOpsGoogleConnectorStatus {\n return googleStatusFromAccount({\n account,\n agentId: this.agentId(),\n defaultMode: \"local\",\n availableModes: [\"local\"],\n });\n }\n\n public async withGoogleGrantOperation<T>(\n _grant: LifeOpsConnectorGrant,\n operation: () => Promise<T>,\n ): Promise<T> {\n return operation();\n }\n\n public async runManagedGoogleOperation<T>(\n _grant: LifeOpsConnectorGrant,\n _operation: () => Promise<T>,\n ): Promise<T> {\n fail(\n 410,\n \"Cloud-managed Google operations were removed from LifeOps. Use @elizaos/plugin-google connector accounts.\",\n );\n }\n\n public async clearGoogleConnectorData(\n side?: LifeOpsConnectorSide,\n ): Promise<void> {\n const calendarEvents = await this.repository.listCalendarEvents(\n this.agentId(),\n \"google\",\n undefined,\n undefined,\n side,\n );\n await this.deleteCalendarReminderPlansForEvents(\n calendarEvents.map((event) => event.id),\n );\n await this.repository.deleteCalendarEventsForProvider(\n this.agentId(),\n \"google\",\n undefined,\n side,\n );\n await this.repository.deleteCalendarSyncState(\n this.agentId(),\n \"google\",\n undefined,\n side,\n );\n await this.repository.deleteGmailMessagesForProvider(\n this.agentId(),\n \"google\",\n side,\n );\n await this.repository.deleteGmailSpamReviewItemsForProvider(\n this.agentId(),\n \"google\",\n side,\n );\n await this.repository.deleteGmailSyncState(\n this.agentId(),\n \"google\",\n undefined,\n side,\n );\n }\n\n public async clearGoogleGrantData(\n grant: LifeOpsConnectorGrant,\n ): Promise<void> {\n await this.deleteCalendarReminderPlansForEvents(\n (\n await this.repository.listCalendarEvents(\n this.agentId(),\n \"google\",\n undefined,\n undefined,\n grant.side,\n )\n )\n .filter((event) => event.grantId === grant.id)\n .map((event) => event.id),\n );\n await this.repository.deleteCalendarEventsForProvider(\n this.agentId(),\n \"google\",\n grant.id,\n grant.side,\n );\n await this.repository.deleteCalendarSyncState(\n this.agentId(),\n \"google\",\n grant.id,\n grant.side,\n );\n await this.repository.deleteGmailMessagesForProvider(\n this.agentId(),\n \"google\",\n grant.side,\n grant.id,\n );\n await this.repository.deleteGmailSpamReviewItemsForProvider(\n this.agentId(),\n \"google\",\n grant.side,\n grant.id,\n );\n await this.repository.deleteGmailSyncState(\n this.agentId(),\n \"google\",\n grant.id,\n grant.side,\n );\n }\n\n public async deleteCalendarReminderPlansForEvents(\n _eventIds: string[],\n ): Promise<void> {\n // Implemented by withCalendar; this no-op fallback keeps withGoogle\n // independently usable in unit tests that compose only connector status\n // methods.\n }\n\n public async setPreferredGoogleConnectorMode(\n _mode: LifeOpsConnectorMode | null,\n _side?: LifeOpsConnectorSide,\n ): Promise<LifeOpsConnectorGrant | null> {\n return null;\n }\n\n public async requireGoogleCalendarGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n assertLocalMode(normalizeOptionalConnectorMode(requestedMode, \"mode\"));\n const status = await this.getGoogleConnectorStatus(\n requestUrl,\n \"local\",\n requestedSide,\n grantId,\n );\n const grant = status.grant;\n if (!status.connected || !grant) {\n fail(409, \"Google Calendar is not connected.\");\n }\n if (!grant.capabilities.includes(\"google.calendar.read\")) {\n fail(403, \"Google Calendar read access has not been granted.\");\n }\n return grant;\n }\n\n public async requireGoogleCalendarWriteGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n const grant = await this.requireGoogleCalendarGrant(\n requestUrl,\n requestedMode,\n requestedSide,\n grantId,\n );\n if (!grant.capabilities.includes(\"google.calendar.write\")) {\n fail(403, \"Google Calendar write access has not been granted.\");\n }\n return grant;\n }\n\n public async requireGoogleGmailGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n assertLocalMode(normalizeOptionalConnectorMode(requestedMode, \"mode\"));\n const status = await this.getGoogleConnectorStatus(\n requestUrl,\n \"local\",\n requestedSide,\n grantId,\n );\n const grant = status.grant;\n if (!status.connected || !grant) {\n fail(409, \"Google Gmail is not connected.\");\n }\n if (!grant.capabilities.includes(\"google.gmail.triage\")) {\n fail(403, \"Google Gmail triage access has not been granted.\");\n }\n return grant;\n }\n\n public async requireGoogleGmailSendGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n const grant = await this.requireGoogleGmailGrant(\n requestUrl,\n requestedMode,\n requestedSide,\n grantId,\n );\n if (!grant.capabilities.includes(\"google.gmail.send\")) {\n fail(403, \"Google Gmail send access has not been granted.\");\n }\n return grant;\n }\n\n async getGoogleConnectorStatus(\n _requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const mode = normalizeOptionalConnectorMode(requestedMode, \"mode\");\n assertLocalMode(mode);\n const side =\n normalizeOptionalConnectorSide(requestedSide, \"side\") ?? \"owner\";\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n return googlePluginUnavailableStatus(side);\n }\n const account = await resolveGoogleConnectorAccount({\n runtime: this.runtime,\n requestedSide: side,\n grantId,\n });\n return account\n ? this.googleAccountStatus(account)\n : disconnectedGoogleStatus(side);\n }\n\n async getGoogleConnectorAccounts(\n _requestUrl: URL,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus[]> {\n const side = normalizeOptionalConnectorSide(requestedSide, \"side\");\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n return side\n ? [googlePluginUnavailableStatus(side)]\n : [\n googlePluginUnavailableStatus(\"owner\"),\n googlePluginUnavailableStatus(\"agent\"),\n ];\n }\n const accounts = await listGoogleConnectorAccounts({\n runtime: this.runtime,\n requestedSide: side,\n });\n if (accounts.length === 0) {\n return side ? [disconnectedGoogleStatus(side)] : [];\n }\n return accounts.map((account) => this.googleAccountStatus(account));\n }\n\n async selectGoogleConnectorMode(\n requestUrl: URL,\n preferredModeInput: LifeOpsConnectorMode | undefined,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const preferredMode = normalizeOptionalConnectorMode(\n preferredModeInput,\n \"mode\",\n );\n assertLocalMode(preferredMode);\n return this.getGoogleConnectorStatus(requestUrl, \"local\", requestedSide);\n }\n\n async startGoogleConnector(\n request: StartLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<StartLifeOpsGoogleConnectorResponse> {\n const mode = normalizeOptionalConnectorMode(request.mode, \"mode\");\n assertLocalMode(mode);\n const requestedSide =\n normalizeOptionalConnectorSide(request.side, \"side\") ?? \"owner\";\n const requestedCapabilities = normalizeGoogleCapabilityRequest(\n request.capabilities,\n );\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n fail(\n 503,\n \"@elizaos/plugin-google is required before starting Google OAuth.\",\n );\n }\n\n const requestedAccountId = googleAccountIdFromGrantId(request.grantId);\n const redirectUri = new URL(\n \"/api/connectors/google/oauth/callback\",\n requestUrl.origin,\n ).toString();\n const flow = await manager.startOAuth(\"google\", {\n redirectUri,\n accountId: requestedAccountId ?? undefined,\n scopes: requestedScopesForCapabilities(requestedCapabilities),\n metadata: {\n lifeops: true,\n side: requestedSide,\n role: roleForSide(requestedSide),\n requestedRole: roleForSide(requestedSide),\n requestedCapabilities,\n privacy: \"owner_only\",\n redirectUrl: normalizeOptionalString(request.redirectUrl),\n },\n });\n return {\n provider: \"google\",\n side: requestedSide,\n mode: \"local\",\n requestedCapabilities: requestedCapabilities ?? [],\n redirectUri: flow.redirectUri ?? redirectUri,\n authUrl: flow.authUrl ?? \"\",\n };\n }\n\n async completeGoogleConnectorCallback(\n callbackUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n fail(\n 503,\n \"@elizaos/plugin-google is required before completing Google OAuth.\",\n );\n }\n const state = callbackUrl.searchParams.get(\"state\") ?? \"\";\n const completed = await manager.completeOAuth(\"google\", {\n state,\n code: callbackUrl.searchParams.get(\"code\") ?? undefined,\n error: callbackUrl.searchParams.get(\"error\") ?? undefined,\n errorDescription:\n callbackUrl.searchParams.get(\"error_description\") ?? undefined,\n query: Object.fromEntries(callbackUrl.searchParams.entries()),\n });\n const side = sideFromMetadata(completed.flow.metadata?.side);\n const accountId =\n completed.account?.id ?? completed.flow.accountId ?? undefined;\n return this.getGoogleConnectorStatus(\n callbackUrl,\n \"local\",\n side,\n accountId ? googleGrantIdForAccount(accountId) : undefined,\n );\n }\n\n async disconnectGoogleConnector(\n request: DisconnectLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const mode = normalizeOptionalConnectorMode(request.mode, \"mode\");\n assertLocalMode(mode);\n const side = normalizeOptionalConnectorSide(request.side, \"side\");\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n fail(\n 503,\n \"@elizaos/plugin-google is required before disconnecting Google accounts.\",\n );\n }\n const requestedGrantId = normalizeOptionalString(request.grantId);\n const account = await resolveGoogleConnectorAccount({\n runtime: this.runtime,\n requestedSide: side,\n grantId: requestedGrantId,\n });\n if (!account) {\n if (requestedGrantId) {\n fail(404, \"Google connector account not found.\");\n }\n return this.getGoogleConnectorStatus(requestUrl, \"local\", side);\n }\n const grant = googleGrantFromAccount({\n account,\n agentId: this.agentId(),\n });\n await manager.deleteAccount(\"google\", account.id);\n await this.clearGoogleGrantData(grant);\n await this.recordConnectorAudit(\n \"google:connector-account\",\n \"google connector account disconnected\",\n {\n connectorAccountId: account.id,\n side: googleSideForAccount(account),\n },\n { disconnected: true },\n );\n return this.getGoogleConnectorStatus(\n requestUrl,\n \"local\",\n side ?? googleSideForAccount(account),\n );\n }\n }\n\n return LifeOpsGoogleServiceMixin as unknown as MixinClass<\n TBase,\n LifeOpsGoogleService\n >;\n}\n"],"mappings":"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","names":[]}
|