@elizaos/plugin-personal-assistant 2.0.3-beta.6 → 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/cross-channel-search.ts"],"sourcesContent":["/**\n * Cross-channel search (WS1).\n *\n * Fans a single semantic query across:\n * - Gmail (via LifeOpsService.getGmailSearch)\n * - Agent memory (runtime.searchMemories with embedding)\n * - WS3 RelationshipsGraphService.getMemoriesForCluster (when a personRef\n * resolves to a canonical cluster)\n *\n * Connectors that lack first-class search emit a typed `unsupported`\n * result. We never fabricate hits.\n *\n * Architecture note: this file is the orchestrator. The action\n * (search-across-channels.ts) handles LLM param extraction and result\n * formatting. The provider (cross-channel-context.ts) consumes\n * runCrossChannelSearch() to inject context for named persons/topics.\n */\n\n// Graph types live in @elizaos/core's relationships-graph-builder. That\n// module is internal to core and not part of its public exports map, so we\n// can't import its runtime helpers from here. We type-shape the parts we\n// touch and provide a local fallback for cluster memory lookup.\nimport type { IAgentRuntime, Memory, Room, Service, UUID } from \"@elizaos/core\";\nimport { logger, ModelType, runWithTrajectoryContext } from \"@elizaos/core\";\n\ntype RelationshipsPersonSummary = {\n groupId: UUID;\n primaryEntityId: UUID;\n memberEntityIds: UUID[];\n displayName: string;\n aliases: string[];\n platforms: string[];\n identities: unknown[];\n emails: string[];\n phones: string[];\n websites: string[];\n preferredCommunicationChannel: string | null;\n categories: string[];\n tags: string[];\n factCount: number;\n relationshipCount: number;\n isOwner: boolean;\n profiles: unknown[];\n lastInteractionAt?: string;\n};\n\ntype RelationshipsGraphService = {\n getGraphSnapshot: (query?: {\n search?: string | null;\n limit?: number;\n }) => Promise<{ people: RelationshipsPersonSummary[] }>;\n getPersonDetail: (\n primaryEntityId: UUID,\n ) => Promise<RelationshipsPersonSummary | null>;\n};\n\n// Local fallback used when the registered RelationshipsGraphService doesn't\n// implement getMemoriesForCluster — degrades to a single-entity query.\nasync function getClusterMemories(\n runtime: IAgentRuntime,\n primaryEntityId: UUID,\n params: { tableName: string; worldId?: UUID; count?: number },\n): Promise<Memory[]> {\n return runtime.getMemories({\n tableName: params.tableName,\n worldId: params.worldId,\n count: params.count,\n entityId: primaryEntityId,\n });\n}\n\nimport type {\n LifeOpsCalendarEvent,\n LifeOpsGmailMessageSummary,\n LifeOpsXDm,\n LifeOpsXFeedItem,\n} from \"@elizaos/shared\";\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport const CROSS_CHANNEL_SEARCH_CHANNELS = [\n \"gmail\",\n \"memory\",\n \"telegram\",\n \"discord\",\n \"imessage\",\n \"whatsapp\",\n \"signal\",\n \"x\",\n \"x-dm\",\n \"calendly\",\n \"calendar\",\n] as const;\n\nexport type CrossChannelSearchChannel =\n (typeof CROSS_CHANNEL_SEARCH_CHANNELS)[number];\n\nexport type CrossChannelSearchTimeWindow = {\n /** ISO timestamp lower bound (inclusive). */\n startIso?: string;\n /** ISO timestamp upper bound (inclusive). */\n endIso?: string;\n};\n\nexport type CrossChannelSearchPersonRef = {\n /** Canonical cluster primary entity id (preferred). */\n primaryEntityId?: UUID;\n /** Free-form display name from LLM extraction (fallback). */\n displayName?: string;\n};\n\nexport type CrossChannelSearchQuery = {\n /** Free-form semantic query — required, no fallback default. */\n query: string;\n /** Optional named person to focus the search on. */\n personRef?: CrossChannelSearchPersonRef;\n /** Optional ISO time window to bound results. */\n timeWindow?: CrossChannelSearchTimeWindow;\n /** Optional explicit channel allowlist; default = all known channels. */\n channels?: CrossChannelSearchChannel[];\n /** Optional worldId scope for memory search. */\n worldId?: UUID;\n /** Per-channel hit cap (default 10). */\n limit?: number;\n};\n\nexport type CrossChannelSearchHit = {\n channel: CrossChannelSearchChannel;\n /** Stable id for dedup + citation. */\n id: string;\n /** Source room id for memory hits, gmail message id for gmail, etc. */\n sourceRef: string;\n /** ISO timestamp. */\n timestamp: string;\n /** Sender / from. */\n speaker: string;\n /** Free-form text body (already trimmed). */\n text: string;\n /** Optional subject (gmail). */\n subject?: string;\n /** Provenance for the citation. */\n citation: {\n platform: string;\n label: string;\n url?: string;\n };\n};\n\nexport type CrossChannelSearchUnsupported = {\n channel: CrossChannelSearchChannel;\n reason: string;\n};\n\nexport type CrossChannelSearchDegraded = {\n channel: CrossChannelSearchChannel;\n reason: string;\n};\n\nexport type CrossChannelSearchResult = {\n query: string;\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n degraded: CrossChannelSearchDegraded[];\n /** Channels that produced at least one hit. */\n channelsWithHits: CrossChannelSearchChannel[];\n /** Resolved canonical person, when available from WS3. */\n resolvedPerson: RelationshipsPersonSummary | null;\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_PER_CHANNEL_LIMIT = 10;\nconst MEMORY_MATCH_THRESHOLD = 0.55;\n\nconst KNOWN_PLATFORM_FOR_CHANNEL: Record<CrossChannelSearchChannel, string> = {\n gmail: \"gmail\",\n memory: \"memory\",\n telegram: \"telegram\",\n discord: \"discord\",\n imessage: \"imessage\",\n whatsapp: \"whatsapp\",\n signal: \"signal\",\n x: \"x\",\n \"x-dm\": \"x\",\n calendly: \"calendly\",\n calendar: \"calendar\",\n};\n\nfunction withinTimeWindow(\n iso: string | undefined,\n window: CrossChannelSearchTimeWindow | undefined,\n): boolean {\n if (!window || (!window.startIso && !window.endIso)) {\n return true;\n }\n if (!iso) {\n return false;\n }\n const t = Date.parse(iso);\n if (Number.isNaN(t)) {\n return false;\n }\n if (window.startIso) {\n const start = Date.parse(window.startIso);\n if (!Number.isNaN(start) && t < start) {\n return false;\n }\n }\n if (window.endIso) {\n const end = Date.parse(window.endIso);\n if (!Number.isNaN(end) && t > end) {\n return false;\n }\n }\n return true;\n}\n\nfunction normalizeIsoFromMs(ms: number | undefined): string {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) {\n return new Date(0).toISOString();\n }\n return new Date(ms).toISOString();\n}\n\nfunction classifyMemoryChannel(\n source: string | undefined,\n): CrossChannelSearchChannel {\n const normalized = (source ?? \"\").trim().toLowerCase();\n switch (normalized) {\n case \"telegram\":\n return \"telegram\";\n case \"discord\":\n return \"discord\";\n case \"imessage\":\n case \"messages\":\n return \"imessage\";\n case \"whatsapp\":\n return \"whatsapp\";\n case \"signal\":\n return \"signal\";\n case \"x\":\n case \"twitter\":\n return \"x\";\n case \"x-dm\":\n return \"x-dm\";\n case \"calendly\":\n return \"calendly\";\n case \"calendar\":\n case \"google-calendar\":\n return \"calendar\";\n case \"gmail\":\n case \"google-gmail\":\n case \"email\":\n return \"gmail\";\n default:\n return \"memory\";\n }\n}\n\nfunction isChannelEnabled(\n channel: CrossChannelSearchChannel,\n channels: CrossChannelSearchChannel[] | undefined,\n): boolean {\n if (!channels || channels.length === 0) {\n return true;\n }\n return channels.includes(channel);\n}\n\n// ---------------------------------------------------------------------------\n// Per-channel adapters\n// ---------------------------------------------------------------------------\n\ntype GmailSearchService = {\n getGmailSearch: (\n requestUrl: URL,\n request: { query: string; maxResults?: number },\n ) => Promise<{ messages: LifeOpsGmailMessageSummary[] }>;\n};\n\ntype TelegramMessageSearchResult = {\n id: string | null;\n dialogId: string | null;\n dialogTitle: string | null;\n username: string | null;\n content: string;\n timestamp: string | null;\n outgoing: boolean;\n};\n\ntype DiscordMessageSearchResult = {\n id: string | null;\n content: string;\n authorName: string | null;\n channelId: string | null;\n timestamp: string | null;\n};\n\ntype IMessageSearchResult = {\n id: string;\n fromHandle: string;\n toHandles: string[];\n text: string;\n isFromMe: boolean;\n sentAt: string;\n chatId?: string;\n};\n\ntype CrossChannelNativeSearchService = GmailSearchService & {\n searchTelegramMessages?: (request: {\n query: string;\n scope?: string;\n limit?: number;\n }) => Promise<TelegramMessageSearchResult[]>;\n searchDiscordMessages?: (request: {\n query: string;\n channelId?: string;\n }) => Promise<DiscordMessageSearchResult[]>;\n searchIMessages?: (request: {\n query: string;\n chatId?: string;\n limit?: number;\n }) => Promise<IMessageSearchResult[]>;\n readSignalInbound?: (limit?: number) => Promise<\n Array<{\n id: string;\n threadId?: string | null;\n roomName?: string | null;\n speakerName?: string | null;\n senderNumber?: string | null;\n createdAt: number;\n text: string;\n }>\n >;\n pullWhatsAppRecent?: (limit?: number) => Promise<{\n count: number;\n messages: Array<{\n id: string;\n from: string;\n channelId: string;\n timestamp: string;\n text?: string;\n metadata?: { contactName?: string };\n }>;\n }>;\n getCalendarFeed?: (\n requestUrl: URL,\n request: {\n timeMin?: string;\n timeMax?: string;\n includeHiddenCalendars?: boolean;\n },\n ) => Promise<{ events: LifeOpsCalendarEvent[] }>;\n searchXPosts?: (\n query: string,\n opts?: { limit?: number },\n ) => Promise<LifeOpsXFeedItem[]>;\n getXDms?: (opts?: {\n conversationId?: string;\n limit?: number;\n }) => Promise<LifeOpsXDm[]>;\n};\n\nfunction isObjectService(value: unknown): value is object {\n return Boolean(value) && typeof value === \"object\";\n}\n\nfunction getLifeOpsSearchService(\n runtime: IAgentRuntime,\n): CrossChannelNativeSearchService | null {\n const service = runtime.getService(\"lifeops\");\n // CrossChannelNativeSearchService = GmailSearchService & optional search\n // methods. Validate the required getGmailSearch surface at this runtime\n // boundary and narrow, rather than asserting across non-overlapping types.\n if (!isObjectService(service)) {\n return null;\n }\n const candidate = service as { getGmailSearch?: unknown };\n return typeof candidate.getGmailSearch === \"function\"\n ? (service as Service & CrossChannelNativeSearchService)\n : null;\n}\n\nasync function searchGmail(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n degraded: CrossChannelSearchDegraded[];\n}> {\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.getGmailSearch !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"gmail\",\n reason: \"LifeOpsService not registered on runtime\",\n },\n ],\n degraded: [],\n };\n }\n\n const requestUrl = new URL(\"http://127.0.0.1/api/lifeops/gmail/search\");\n const feed = await lifeOps.getGmailSearch(requestUrl, {\n query: query.query,\n maxResults: limit,\n });\n\n const hits: CrossChannelSearchHit[] = [];\n for (const msg of feed.messages) {\n if (!withinTimeWindow(msg.receivedAt, query.timeWindow)) {\n continue;\n }\n hits.push({\n channel: \"gmail\",\n id: `gmail:${msg.id}`,\n sourceRef: msg.id,\n timestamp: msg.receivedAt,\n speaker: msg.from,\n subject: msg.subject,\n text: msg.snippet,\n citation: {\n platform: \"gmail\",\n label: msg.subject || msg.snippet.slice(0, 80),\n url: msg.htmlLink ?? undefined,\n },\n });\n }\n return { hits, unsupported: [], degraded: [] };\n}\n\nasync function searchTelegram(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.searchTelegramMessages !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"telegram\",\n reason: \"Telegram search is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const messages = await lifeOps.searchTelegramMessages({\n query: query.query,\n limit,\n });\n const hits: CrossChannelSearchHit[] = [];\n for (const msg of messages) {\n if (!withinTimeWindow(msg.timestamp ?? undefined, query.timeWindow)) {\n continue;\n }\n const sourceRef = msg.id ?? msg.dialogId ?? msg.content.slice(0, 48);\n hits.push({\n channel: \"telegram\",\n id: `telegram:${sourceRef}`,\n sourceRef,\n timestamp: msg.timestamp ?? new Date(0).toISOString(),\n speaker: msg.outgoing ? \"me\" : (msg.username ?? \"unknown\"),\n text: msg.content,\n citation: {\n platform: \"telegram\",\n label: msg.dialogTitle ?? msg.username ?? \"Telegram\",\n },\n });\n }\n return { hits, unsupported: [] };\n}\n\nasync function searchDiscord(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.searchDiscordMessages !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"discord\",\n reason: \"Discord search is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const messages = await lifeOps.searchDiscordMessages({ query: query.query });\n const hits: CrossChannelSearchHit[] = [];\n for (const msg of messages) {\n if (!withinTimeWindow(msg.timestamp ?? undefined, query.timeWindow)) {\n continue;\n }\n const sourceRef = msg.id ?? msg.channelId ?? msg.content.slice(0, 48);\n hits.push({\n channel: \"discord\",\n id: `discord:${sourceRef}`,\n sourceRef,\n timestamp: msg.timestamp ?? new Date(0).toISOString(),\n speaker: msg.authorName ?? \"unknown\",\n text: msg.content,\n citation: {\n platform: \"discord\",\n label: msg.channelId ? `channel:${msg.channelId}` : \"Discord\",\n },\n });\n }\n return { hits, unsupported: [] };\n}\n\nasync function searchIMessages(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.searchIMessages !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"imessage\",\n reason: \"iMessage search is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const messages = await lifeOps.searchIMessages({\n query: query.query,\n limit,\n });\n const hits: CrossChannelSearchHit[] = [];\n for (const msg of messages) {\n if (!withinTimeWindow(msg.sentAt, query.timeWindow)) {\n continue;\n }\n hits.push({\n channel: \"imessage\",\n id: `imessage:${msg.id}`,\n sourceRef: msg.id,\n timestamp: msg.sentAt,\n speaker: msg.isFromMe ? \"me\" : msg.fromHandle,\n text: msg.text,\n citation: {\n platform: \"imessage\",\n label: msg.chatId ?? msg.fromHandle,\n },\n });\n }\n return { hits, unsupported: [] };\n}\n\nasync function searchSignal(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.readSignalInbound !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"signal\",\n reason: \"Signal passive read is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const needle = query.query.trim().toLowerCase();\n const messages = await lifeOps.readSignalInbound(limit + 25);\n const hits: CrossChannelSearchHit[] = [];\n for (const msg of messages) {\n const timestamp = normalizeIsoFromMs(msg.createdAt);\n if (!withinTimeWindow(timestamp, query.timeWindow)) {\n continue;\n }\n if (needle && !msg.text.toLowerCase().includes(needle)) {\n continue;\n }\n hits.push({\n channel: \"signal\",\n id: `signal:${msg.id}`,\n sourceRef: msg.id,\n timestamp,\n speaker: msg.speakerName ?? msg.senderNumber ?? \"unknown\",\n text: msg.text,\n citation: {\n platform: \"signal\",\n label: msg.roomName ?? msg.threadId ?? \"Signal\",\n },\n });\n }\n return { hits: hits.slice(0, limit), unsupported: [] };\n}\n\nasync function searchWhatsApp(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.pullWhatsAppRecent !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"whatsapp\",\n reason: \"WhatsApp passive read is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const needle = query.query.trim().toLowerCase();\n const recent = await lifeOps.pullWhatsAppRecent(limit + 25);\n const hits: CrossChannelSearchHit[] = [];\n for (const msg of recent.messages) {\n const text = msg.text?.trim();\n if (!text) {\n continue;\n }\n if (!withinTimeWindow(msg.timestamp, query.timeWindow)) {\n continue;\n }\n if (needle && !text.toLowerCase().includes(needle)) {\n continue;\n }\n hits.push({\n channel: \"whatsapp\",\n id: `whatsapp:${msg.id}`,\n sourceRef: msg.id,\n timestamp: msg.timestamp,\n speaker: msg.metadata?.contactName ?? msg.from,\n text,\n citation: {\n platform: \"whatsapp\",\n label: msg.metadata?.contactName ?? msg.channelId,\n },\n });\n }\n return { hits: hits.slice(0, limit), unsupported: [] };\n}\n\nfunction searchableCalendarText(event: LifeOpsCalendarEvent): string {\n return [\n event.title,\n event.description,\n event.location,\n event.organizer && typeof event.organizer === \"object\"\n ? JSON.stringify(event.organizer)\n : \"\",\n ...event.attendees.map((attendee) =>\n [attendee.displayName, attendee.email].filter(Boolean).join(\" \"),\n ),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n}\n\nasync function searchCalendar(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.getCalendarFeed !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"calendar\",\n reason: \"Calendar feed is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const feed = await lifeOps.getCalendarFeed(\n new URL(\"http://127.0.0.1/api/lifeops/calendar/feed\"),\n {\n timeMin: query.timeWindow?.startIso,\n timeMax: query.timeWindow?.endIso,\n includeHiddenCalendars: true,\n },\n );\n const needle = query.query.trim().toLowerCase();\n const hits: CrossChannelSearchHit[] = [];\n for (const event of feed.events) {\n if (!withinTimeWindow(event.startAt, query.timeWindow)) {\n continue;\n }\n if (needle && !searchableCalendarText(event).includes(needle)) {\n continue;\n }\n const organizer =\n event.organizer && typeof event.organizer === \"object\"\n ? (event.organizer as { displayName?: unknown; email?: unknown })\n : null;\n hits.push({\n channel: \"calendar\",\n id: `calendar:${event.id}`,\n sourceRef: event.id,\n timestamp: event.startAt,\n speaker:\n typeof organizer?.displayName === \"string\"\n ? organizer.displayName\n : typeof organizer?.email === \"string\"\n ? organizer.email\n : \"calendar\",\n subject: event.title,\n text: [event.title, event.description, event.location]\n .filter(Boolean)\n .join(\" — \"),\n citation: {\n platform: \"calendar\",\n label: event.title,\n url: event.htmlLink ?? event.conferenceLink ?? undefined,\n },\n });\n }\n return { hits, unsupported: [] };\n}\n\nfunction xStatusUrl(item: LifeOpsXFeedItem): string | undefined {\n const tweetId = item.externalTweetId.trim();\n if (!tweetId) return undefined;\n const handle = item.authorHandle.replace(/^@/, \"\").trim();\n return handle\n ? `https://x.com/${encodeURIComponent(handle)}/status/${encodeURIComponent(tweetId)}`\n : `https://x.com/i/web/status/${encodeURIComponent(tweetId)}`;\n}\n\nasync function searchXPostsChannel(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.searchXPosts !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"x\",\n reason: \"X post search is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const posts = await lifeOps.searchXPosts(query.query, { limit });\n const hits: CrossChannelSearchHit[] = [];\n for (const post of posts) {\n if (!withinTimeWindow(post.createdAtSource, query.timeWindow)) {\n continue;\n }\n hits.push({\n channel: \"x\",\n id: `x:${post.externalTweetId || post.id}`,\n sourceRef: post.id,\n timestamp: post.createdAtSource,\n speaker: post.authorHandle,\n text: post.text,\n citation: {\n platform: \"x\",\n label: post.authorHandle,\n url: xStatusUrl(post),\n },\n });\n }\n return { hits, unsupported: [] };\n}\n\nasync function searchXDms(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n unsupported: CrossChannelSearchUnsupported[];\n}> {\n const lifeOps = getLifeOpsSearchService(runtime);\n if (!lifeOps || typeof lifeOps.getXDms !== \"function\") {\n return {\n hits: [],\n unsupported: [\n {\n channel: \"x-dm\",\n reason: \"X DM search is not available on LifeOpsService\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const needle = query.query.trim().toLowerCase();\n const dms = await lifeOps.getXDms({ limit: limit + 10 });\n const hits: CrossChannelSearchHit[] = [];\n for (const dm of dms) {\n if (!withinTimeWindow(dm.receivedAt, query.timeWindow)) {\n continue;\n }\n if (needle && !dm.text.toLowerCase().includes(needle)) {\n continue;\n }\n hits.push({\n channel: \"x-dm\",\n id: `x-dm:${dm.id}`,\n sourceRef: dm.id,\n timestamp: dm.receivedAt,\n speaker: dm.isInbound ? dm.senderHandle : \"me\",\n text: dm.text,\n citation: {\n platform: \"x\",\n label: dm.senderHandle || dm.conversationId,\n },\n });\n }\n return { hits: hits.slice(0, limit), unsupported: [] };\n}\n\nasync function embedQuery(\n runtime: IAgentRuntime,\n text: string,\n): Promise<number[] | null> {\n const result = await runWithTrajectoryContext(\n { purpose: \"lifeops-cross-channel-search-embedding\" },\n () => runtime.useModel(ModelType.TEXT_EMBEDDING, { text }),\n );\n if (Array.isArray(result)) {\n return result;\n }\n if (\n result &&\n typeof result === \"object\" &&\n Array.isArray((result as { embedding?: unknown }).embedding)\n ) {\n return (result as { embedding: number[] }).embedding;\n }\n return null;\n}\n\nasync function searchAgentMemory(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n degraded: CrossChannelSearchDegraded[];\n}> {\n const embedding = await embedQuery(runtime, query.query);\n if (!embedding) {\n return {\n hits: [],\n degraded: [\n {\n channel: \"memory\",\n reason: \"Embedding generation returned no vector\",\n },\n ],\n };\n }\n\n const limit = query.limit ?? DEFAULT_PER_CHANNEL_LIMIT;\n const searchParams: Parameters<IAgentRuntime[\"searchMemories\"]>[0] = {\n embedding,\n tableName: \"messages\",\n match_threshold: MEMORY_MATCH_THRESHOLD,\n limit: limit + 10,\n worldId: query.worldId,\n };\n\n const memories = await runtime.searchMemories(searchParams);\n const hits = await memoriesToHits(runtime, memories, query);\n return { hits, degraded: [] };\n}\n\nasync function memoriesToHits(\n runtime: IAgentRuntime,\n memories: Memory[],\n query: CrossChannelSearchQuery,\n): Promise<CrossChannelSearchHit[]> {\n const roomCache = new Map<string, Room | null>();\n const results: CrossChannelSearchHit[] = [];\n\n for (const mem of memories) {\n const text = (mem.content.text ?? \"\").trim();\n if (!text) continue;\n\n const iso = normalizeIsoFromMs(mem.createdAt);\n if (!withinTimeWindow(iso, query.timeWindow)) {\n continue;\n }\n\n const roomId = mem.roomId as UUID | undefined;\n let room: Room | null = null;\n if (roomId) {\n if (!roomCache.has(roomId)) {\n const fetched = await runtime.getRoom(roomId);\n roomCache.set(roomId, fetched ?? null);\n }\n room = roomCache.get(roomId) ?? null;\n }\n\n const roomRecord = room as\n | (Room & { name?: string; source?: string })\n | null;\n const platformSource = roomRecord?.source ?? roomRecord?.type;\n const channel = classifyMemoryChannel(platformSource);\n\n if (!isChannelEnabled(channel, query.channels)) {\n continue;\n }\n\n const speakerEntity = mem.entityId as string | undefined;\n const memId =\n (mem.id as string | undefined) ?? `${roomId}:${mem.createdAt}`;\n\n results.push({\n channel,\n id: `${channel}:${memId}`,\n sourceRef: memId,\n timestamp: iso,\n speaker: speakerEntity ?? \"unknown\",\n text: text.slice(0, 600),\n citation: {\n platform: KNOWN_PLATFORM_FOR_CHANNEL[channel],\n label: roomRecord?.name ?? `room:${(roomId ?? \"\").slice(0, 8)}`,\n },\n });\n }\n\n return results;\n}\n\n// ---------------------------------------------------------------------------\n// WS3 cluster fan-out\n// ---------------------------------------------------------------------------\n\n// WS3 plans to publish this on RelationshipsGraphService. Until the type is\n// committed upstream we encode the expected signature locally.\ntype GetMemoriesForClusterFn = (args: {\n primaryEntityId: UUID;\n count?: number;\n worldId?: UUID;\n}) => Promise<Memory[]>;\n\ntype RelationshipsGraphServiceWithCluster = RelationshipsGraphService & {\n getMemoriesForCluster?: GetMemoriesForClusterFn;\n};\n\nfunction isRelationshipsGraphServiceWithCluster(\n service: unknown,\n): service is RelationshipsGraphServiceWithCluster {\n if (!isObjectService(service)) return false;\n const candidate = service as Partial<RelationshipsGraphServiceWithCluster>;\n return (\n typeof candidate.getGraphSnapshot === \"function\" &&\n typeof candidate.getPersonDetail === \"function\"\n );\n}\n\nasync function resolvePerson(\n runtime: IAgentRuntime,\n ref: CrossChannelSearchPersonRef | undefined,\n): Promise<{\n service: RelationshipsGraphServiceWithCluster | null;\n person: RelationshipsPersonSummary | null;\n degraded: CrossChannelSearchDegraded[];\n}> {\n if (!ref) {\n return { service: null, person: null, degraded: [] };\n }\n\n const candidateService = runtime.getService(\"relationships\");\n const baseService = isRelationshipsGraphServiceWithCluster(candidateService)\n ? candidateService\n : null;\n const service = baseService\n ? ({\n ...baseService,\n getMemoriesForCluster:\n baseService.getMemoriesForCluster ??\n ((args) =>\n getClusterMemories(runtime, args.primaryEntityId, {\n tableName: \"messages\",\n worldId: args.worldId,\n count: args.count,\n })),\n } satisfies RelationshipsGraphServiceWithCluster)\n : null;\n if (!service) {\n return {\n service: null,\n person: null,\n degraded: [\n {\n channel: \"memory\",\n reason:\n \"RelationshipsGraphService not registered — falling back to plain semantic search\",\n },\n ],\n };\n }\n\n if (ref.primaryEntityId) {\n const detail = await service.getPersonDetail(ref.primaryEntityId);\n if (detail) {\n return { service, person: detail, degraded: [] };\n }\n }\n\n const search = ref.displayName?.trim();\n if (!search) {\n return { service, person: null, degraded: [] };\n }\n\n const snapshot = await service.getGraphSnapshot({ search, limit: 5 });\n const person = snapshot.people[0] ?? null;\n return { service, person, degraded: [] };\n}\n\nasync function searchClusterMemories(\n runtime: IAgentRuntime,\n service: RelationshipsGraphServiceWithCluster,\n person: RelationshipsPersonSummary,\n query: CrossChannelSearchQuery,\n): Promise<{\n hits: CrossChannelSearchHit[];\n degraded: CrossChannelSearchDegraded[];\n}> {\n const fn = service.getMemoriesForCluster;\n if (typeof fn !== \"function\") {\n return {\n hits: [],\n degraded: [\n {\n channel: \"memory\",\n reason:\n \"RelationshipsGraphService.getMemoriesForCluster is unavailable on the registered service\",\n },\n ],\n };\n }\n\n const memories = await fn({\n primaryEntityId: person.primaryEntityId,\n count: (query.limit ?? DEFAULT_PER_CHANNEL_LIMIT) * 2,\n worldId: query.worldId,\n });\n const hits = await memoriesToHits(runtime, memories, query);\n return { hits, degraded: [] };\n}\n\n// ---------------------------------------------------------------------------\n// Connector adapters that don't yet have first-class search\n// ---------------------------------------------------------------------------\n\nconst CONNECTORS_WITHOUT_NATIVE_SEARCH: ReadonlyArray<{\n channel: CrossChannelSearchChannel;\n reason: string;\n}> = [\n {\n channel: \"calendly\",\n reason: \"Calendly search is not available on LifeOpsService\",\n },\n];\n\n// ---------------------------------------------------------------------------\n// Result merge\n// ---------------------------------------------------------------------------\n\nfunction dedupeHits(hits: CrossChannelSearchHit[]): CrossChannelSearchHit[] {\n const seen = new Set<string>();\n const out: CrossChannelSearchHit[] = [];\n for (const hit of hits) {\n if (seen.has(hit.id)) continue;\n seen.add(hit.id);\n out.push(hit);\n }\n return out;\n}\n\nfunction rankHits(hits: CrossChannelSearchHit[]): CrossChannelSearchHit[] {\n return [...hits].sort((a, b) => {\n const ta = Date.parse(a.timestamp);\n const tb = Date.parse(b.timestamp);\n if (Number.isNaN(ta) && Number.isNaN(tb)) return 0;\n if (Number.isNaN(ta)) return 1;\n if (Number.isNaN(tb)) return -1;\n return tb - ta;\n });\n}\n\n// ---------------------------------------------------------------------------\n// Public entry point\n// ---------------------------------------------------------------------------\n\nexport async function runCrossChannelSearch(\n runtime: IAgentRuntime,\n query: CrossChannelSearchQuery,\n): Promise<CrossChannelSearchResult> {\n if (query.query.trim().length === 0) {\n throw new Error(\"runCrossChannelSearch: query.query is required\");\n }\n\n const channels = query.channels;\n const unsupported: CrossChannelSearchUnsupported[] = [];\n const degraded: CrossChannelSearchDegraded[] = [];\n const allHits: CrossChannelSearchHit[] = [];\n\n // 1. Resolve canonical person via WS3 (best-effort).\n const personResolution = await resolvePerson(runtime, query.personRef);\n degraded.push(...personResolution.degraded);\n\n // 2. Fan out in parallel.\n const tasks: Array<Promise<void>> = [];\n\n if (isChannelEnabled(\"gmail\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchGmail(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n degraded.push(...r.degraded);\n } catch (err) {\n degraded.push({\n channel: \"gmail\",\n reason: `Gmail search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"telegram\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchTelegram(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"telegram\",\n reason: `Telegram search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"discord\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchDiscord(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"discord\",\n reason: `Discord search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"imessage\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchIMessages(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"imessage\",\n reason: `iMessage search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"signal\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchSignal(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"signal\",\n reason: `Signal search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"whatsapp\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchWhatsApp(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"whatsapp\",\n reason: `WhatsApp search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"calendar\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchCalendar(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"calendar\",\n reason: `Calendar search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"x\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchXPostsChannel(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"x\",\n reason: `X post search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"x-dm\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchXDms(runtime, query);\n allHits.push(...r.hits);\n unsupported.push(...r.unsupported);\n } catch (err) {\n degraded.push({\n channel: \"x-dm\",\n reason: `X DM search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (isChannelEnabled(\"memory\", channels)) {\n tasks.push(\n (async () => {\n try {\n const r = await searchAgentMemory(runtime, query);\n allHits.push(...r.hits);\n degraded.push(...r.degraded);\n } catch (err) {\n degraded.push({\n channel: \"memory\",\n reason: `Memory search failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n if (personResolution.service && personResolution.person) {\n tasks.push(\n (async () => {\n try {\n const r = await searchClusterMemories(\n runtime,\n personResolution.service as RelationshipsGraphServiceWithCluster,\n personResolution.person as RelationshipsPersonSummary,\n query,\n );\n allHits.push(...r.hits);\n degraded.push(...r.degraded);\n } catch (err) {\n degraded.push({\n channel: \"memory\",\n reason: `Cluster fan-out failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n });\n }\n })(),\n );\n }\n\n await Promise.all(tasks);\n\n // 3. Emit unsupported markers for connectors without native search, only\n // when the caller explicitly asked for that channel (so we don't spam\n // every result with the full list).\n for (const entry of CONNECTORS_WITHOUT_NATIVE_SEARCH) {\n if (channels?.includes(entry.channel)) {\n unsupported.push(entry);\n }\n }\n\n // 4. Dedupe + rank.\n const merged = rankHits(dedupeHits(allHits));\n const channelsWithHits = Array.from(\n new Set(merged.map((h) => h.channel)),\n ) as CrossChannelSearchChannel[];\n\n const finalLimit =\n (query.limit ?? DEFAULT_PER_CHANNEL_LIMIT) *\n CROSS_CHANNEL_SEARCH_CHANNELS.length;\n const limited = merged.slice(0, finalLimit);\n\n logger.debug(\n `[cross-channel-search] query=\"${query.query}\" hits=${limited.length} unsupported=${unsupported.length} degraded=${degraded.length}`,\n );\n\n return {\n query: query.query,\n hits: limited,\n unsupported,\n degraded,\n channelsWithHits,\n resolvedPerson: personResolution.person,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ActivityProfile } from "../activity-profile/types";
|
|
2
|
+
import type { LifeOpsReminderStep, LifeOpsTimeWindowDefinition, LifeOpsWindowPolicy } from "../contracts/index.js";
|
|
3
|
+
export { isValidTimeZone, normalizeTimeZone, resolveDefaultTimeZone, } from "@elizaos/shared";
|
|
4
|
+
export declare const DEFAULT_TIME_WINDOWS: LifeOpsTimeWindowDefinition[];
|
|
5
|
+
export declare const DEFAULT_REMINDER_STEPS: LifeOpsReminderStep[];
|
|
6
|
+
export declare function resolveDefaultWindowPolicy(timeZone?: string | null): LifeOpsWindowPolicy;
|
|
7
|
+
/**
|
|
8
|
+
* Returns true when the given window policy's windows match the static
|
|
9
|
+
* `DEFAULT_TIME_WINDOWS` by name and minute boundaries — i.e. the user
|
|
10
|
+
* has not customized them.
|
|
11
|
+
*/
|
|
12
|
+
export declare function windowPolicyMatchesDefaults(policy: LifeOpsWindowPolicy | null | undefined): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Compute a `LifeOpsWindowPolicy` whose boundaries are shifted to match
|
|
15
|
+
* the user's actual rhythm as captured by the activity profile.
|
|
16
|
+
*
|
|
17
|
+
* Pure function — no runtime dependency. If the profile has no usable
|
|
18
|
+
* rhythm data the returned policy equals `DEFAULT_TIME_WINDOWS`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function computeAdaptiveWindowPolicy(profile: Pick<ActivityProfile, "typicalWakeHour" | "typicalFirstActiveHour" | "typicalLastActiveHour" | "typicalSleepHour">, timezone?: string | null): LifeOpsWindowPolicy;
|
|
21
|
+
export declare function normalizeWindowPolicy(policy: LifeOpsWindowPolicy | null | undefined, timeZone?: string | null): LifeOpsWindowPolicy;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the number of recent conversation lines to include in
|
|
24
|
+
* LifeOps extraction prompts.
|
|
25
|
+
*
|
|
26
|
+
* Reads `ELIZA_LIFEOPS_CONTEXT_WINDOW` from the environment. Falls
|
|
27
|
+
* back to {@link DEFAULT_LIFEOPS_CONTEXT_WINDOW} (16) when unset or invalid.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveContextWindow(): number;
|
|
30
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/lifeops/defaults.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,oBAAoB,EAAE,2BAA2B,EAyB7D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAMvD,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,mBAAmB,CAMrB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAC7C,OAAO,CAkBT;AAiBD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CACX,eAAe,EACb,iBAAiB,GACjB,wBAAwB,GACxB,uBAAuB,GACvB,kBAAkB,CACrB,EACD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,mBAAmB,CAiGrB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EAC9C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,mBAAmB,CAwCrB;AASD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeTimeZone
|
|
3
|
+
} from "@elizaos/shared";
|
|
4
|
+
import {
|
|
5
|
+
isValidTimeZone as isValidTimeZone2,
|
|
6
|
+
normalizeTimeZone as normalizeTimeZone2,
|
|
7
|
+
resolveDefaultTimeZone as resolveDefaultTimeZone2
|
|
8
|
+
} from "@elizaos/shared";
|
|
9
|
+
const DEFAULT_TIME_WINDOWS = [
|
|
10
|
+
{
|
|
11
|
+
name: "morning",
|
|
12
|
+
label: "Morning",
|
|
13
|
+
startMinute: 5 * 60,
|
|
14
|
+
endMinute: 12 * 60
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "afternoon",
|
|
18
|
+
label: "Afternoon",
|
|
19
|
+
startMinute: 12 * 60,
|
|
20
|
+
endMinute: 17 * 60
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "evening",
|
|
24
|
+
label: "Evening",
|
|
25
|
+
startMinute: 17 * 60,
|
|
26
|
+
endMinute: 22 * 60
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "night",
|
|
30
|
+
label: "Night",
|
|
31
|
+
startMinute: 22 * 60,
|
|
32
|
+
endMinute: 28 * 60
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
const DEFAULT_REMINDER_STEPS = [
|
|
36
|
+
{
|
|
37
|
+
channel: "in_app",
|
|
38
|
+
offsetMinutes: 0,
|
|
39
|
+
label: "In-app reminder"
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
function resolveDefaultWindowPolicy(timeZone) {
|
|
43
|
+
const timezone = normalizeTimeZone(timeZone);
|
|
44
|
+
return {
|
|
45
|
+
timezone,
|
|
46
|
+
windows: DEFAULT_TIME_WINDOWS.map((window) => ({ ...window }))
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function windowPolicyMatchesDefaults(policy) {
|
|
50
|
+
if (!policy || !Array.isArray(policy.windows)) return false;
|
|
51
|
+
if (policy.windows.length !== DEFAULT_TIME_WINDOWS.length) return false;
|
|
52
|
+
for (let i = 0; i < DEFAULT_TIME_WINDOWS.length; i++) {
|
|
53
|
+
const def = DEFAULT_TIME_WINDOWS[i];
|
|
54
|
+
const win = policy.windows[i];
|
|
55
|
+
if (!def || !win) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (win.name !== def.name || win.startMinute !== def.startMinute || win.endMinute !== def.endMinute) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
const ADAPTIVE_MORNING_FLOOR_MINUTES = 4 * 60;
|
|
65
|
+
const ADAPTIVE_MORNING_END_CAP_MINUTES = 14 * 60;
|
|
66
|
+
const ADAPTIVE_AFTERNOON_END_CAP_MINUTES = 20 * 60;
|
|
67
|
+
const ADAPTIVE_EVENING_END_CAP_MINUTES = 28 * 60;
|
|
68
|
+
const ADAPTIVE_LEAD_HOURS = 0.5;
|
|
69
|
+
const ADAPTIVE_WINDOW_SPAN_HOURS = 5;
|
|
70
|
+
const ADAPTIVE_LAST_ACTIVE_LAG_HOURS = 1;
|
|
71
|
+
function computeAdaptiveWindowPolicy(profile, timezone) {
|
|
72
|
+
const tz = normalizeTimeZone(timezone);
|
|
73
|
+
const wakeSource = profile.typicalWakeHour ?? profile.typicalFirstActiveHour;
|
|
74
|
+
if (wakeSource === null || wakeSource === void 0) {
|
|
75
|
+
return {
|
|
76
|
+
timezone: tz,
|
|
77
|
+
windows: DEFAULT_TIME_WINDOWS.map((w) => ({ ...w }))
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const morningStartMinute = Math.max(
|
|
81
|
+
Math.round((wakeSource - ADAPTIVE_LEAD_HOURS) * 60),
|
|
82
|
+
ADAPTIVE_MORNING_FLOOR_MINUTES
|
|
83
|
+
);
|
|
84
|
+
const morningEndMinute = Math.min(
|
|
85
|
+
morningStartMinute + ADAPTIVE_WINDOW_SPAN_HOURS * 60,
|
|
86
|
+
ADAPTIVE_MORNING_END_CAP_MINUTES
|
|
87
|
+
);
|
|
88
|
+
const afternoonStartMinute = morningEndMinute;
|
|
89
|
+
const afternoonEndMinute = Math.min(
|
|
90
|
+
afternoonStartMinute + ADAPTIVE_WINDOW_SPAN_HOURS * 60,
|
|
91
|
+
ADAPTIVE_AFTERNOON_END_CAP_MINUTES
|
|
92
|
+
);
|
|
93
|
+
const eveningStartMinute = afternoonEndMinute;
|
|
94
|
+
let eveningEndMinute;
|
|
95
|
+
if (profile.typicalSleepHour !== null && profile.typicalSleepHour !== void 0) {
|
|
96
|
+
eveningEndMinute = Math.min(
|
|
97
|
+
Math.round(profile.typicalSleepHour * 60),
|
|
98
|
+
ADAPTIVE_EVENING_END_CAP_MINUTES
|
|
99
|
+
);
|
|
100
|
+
} else if (profile.typicalLastActiveHour !== null && profile.typicalLastActiveHour !== void 0) {
|
|
101
|
+
eveningEndMinute = Math.min(
|
|
102
|
+
Math.round(
|
|
103
|
+
(profile.typicalLastActiveHour + ADAPTIVE_LAST_ACTIVE_LAG_HOURS) * 60
|
|
104
|
+
),
|
|
105
|
+
ADAPTIVE_EVENING_END_CAP_MINUTES
|
|
106
|
+
);
|
|
107
|
+
} else {
|
|
108
|
+
const defaultEveningWindow = DEFAULT_TIME_WINDOWS[2];
|
|
109
|
+
if (!defaultEveningWindow) {
|
|
110
|
+
throw new Error("[lifeops-defaults] missing default evening window");
|
|
111
|
+
}
|
|
112
|
+
eveningEndMinute = defaultEveningWindow.endMinute;
|
|
113
|
+
}
|
|
114
|
+
if (eveningEndMinute <= eveningStartMinute) {
|
|
115
|
+
eveningEndMinute = eveningStartMinute + 60;
|
|
116
|
+
}
|
|
117
|
+
const nightStartMinute = eveningEndMinute;
|
|
118
|
+
const nightEndMinute = morningStartMinute + 24 * 60;
|
|
119
|
+
return {
|
|
120
|
+
timezone: tz,
|
|
121
|
+
windows: [
|
|
122
|
+
{
|
|
123
|
+
name: "morning",
|
|
124
|
+
label: "Morning",
|
|
125
|
+
startMinute: morningStartMinute,
|
|
126
|
+
endMinute: morningEndMinute
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "afternoon",
|
|
130
|
+
label: "Afternoon",
|
|
131
|
+
startMinute: afternoonStartMinute,
|
|
132
|
+
endMinute: afternoonEndMinute
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: "evening",
|
|
136
|
+
label: "Evening",
|
|
137
|
+
startMinute: eveningStartMinute,
|
|
138
|
+
endMinute: eveningEndMinute
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "night",
|
|
142
|
+
label: "Night",
|
|
143
|
+
startMinute: nightStartMinute,
|
|
144
|
+
endMinute: nightEndMinute
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function normalizeWindowPolicy(policy, timeZone) {
|
|
150
|
+
const fallback = resolveDefaultWindowPolicy(timeZone);
|
|
151
|
+
if (!policy) return fallback;
|
|
152
|
+
const timezone = normalizeTimeZone(
|
|
153
|
+
policy.timezone || timeZone || fallback.timezone
|
|
154
|
+
);
|
|
155
|
+
const windows = Array.isArray(policy.windows) ? policy.windows.map((window) => {
|
|
156
|
+
const name = window.name;
|
|
157
|
+
const label = typeof window.label === "string" && window.label.trim().length > 0 ? window.label.trim() : name;
|
|
158
|
+
const startMinute = Number(window.startMinute);
|
|
159
|
+
const endMinute = Number(window.endMinute);
|
|
160
|
+
if (!Number.isFinite(startMinute) || !Number.isFinite(endMinute)) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
if (endMinute <= startMinute) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
name,
|
|
168
|
+
label,
|
|
169
|
+
startMinute,
|
|
170
|
+
endMinute
|
|
171
|
+
};
|
|
172
|
+
}).filter(
|
|
173
|
+
(window) => window !== null
|
|
174
|
+
) : [];
|
|
175
|
+
if (windows.length === 0) {
|
|
176
|
+
return fallback;
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
timezone,
|
|
180
|
+
windows
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const DEFAULT_LIFEOPS_CONTEXT_WINDOW = 16;
|
|
184
|
+
function resolveContextWindow() {
|
|
185
|
+
const envValue = process.env.ELIZA_LIFEOPS_CONTEXT_WINDOW;
|
|
186
|
+
if (envValue) {
|
|
187
|
+
const parsed = parseInt(envValue, 10);
|
|
188
|
+
if (Number.isFinite(parsed) && parsed > 0) {
|
|
189
|
+
return parsed;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return DEFAULT_LIFEOPS_CONTEXT_WINDOW;
|
|
193
|
+
}
|
|
194
|
+
export {
|
|
195
|
+
DEFAULT_REMINDER_STEPS,
|
|
196
|
+
DEFAULT_TIME_WINDOWS,
|
|
197
|
+
computeAdaptiveWindowPolicy,
|
|
198
|
+
isValidTimeZone2 as isValidTimeZone,
|
|
199
|
+
normalizeTimeZone2 as normalizeTimeZone,
|
|
200
|
+
normalizeWindowPolicy,
|
|
201
|
+
resolveContextWindow,
|
|
202
|
+
resolveDefaultTimeZone2 as resolveDefaultTimeZone,
|
|
203
|
+
resolveDefaultWindowPolicy,
|
|
204
|
+
windowPolicyMatchesDefaults
|
|
205
|
+
};
|
|
206
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/defaults.ts"],"sourcesContent":["import {\n isValidTimeZone,\n normalizeTimeZone,\n resolveDefaultTimeZone,\n} from \"@elizaos/shared\";\nimport type { ActivityProfile } from \"../activity-profile/types.js\";\nimport type {\n LifeOpsReminderStep,\n LifeOpsTimeWindowDefinition,\n LifeOpsWindowPolicy,\n} from \"../contracts/index.js\";\n\n// The time-zone helpers are now runtime-level primitives in `@elizaos/shared`;\n// re-exported here so historical `./defaults.js` callers keep working.\nexport {\n isValidTimeZone,\n normalizeTimeZone,\n resolveDefaultTimeZone,\n} from \"@elizaos/shared\";\n\nexport const DEFAULT_TIME_WINDOWS: LifeOpsTimeWindowDefinition[] = [\n {\n name: \"morning\",\n label: \"Morning\",\n startMinute: 5 * 60,\n endMinute: 12 * 60,\n },\n {\n name: \"afternoon\",\n label: \"Afternoon\",\n startMinute: 12 * 60,\n endMinute: 17 * 60,\n },\n {\n name: \"evening\",\n label: \"Evening\",\n startMinute: 17 * 60,\n endMinute: 22 * 60,\n },\n {\n name: \"night\",\n label: \"Night\",\n startMinute: 22 * 60,\n endMinute: 28 * 60,\n },\n];\n\nexport const DEFAULT_REMINDER_STEPS: LifeOpsReminderStep[] = [\n {\n channel: \"in_app\",\n offsetMinutes: 0,\n label: \"In-app reminder\",\n },\n];\n\nexport function resolveDefaultWindowPolicy(\n timeZone?: string | null,\n): LifeOpsWindowPolicy {\n const timezone = normalizeTimeZone(timeZone);\n return {\n timezone,\n windows: DEFAULT_TIME_WINDOWS.map((window) => ({ ...window })),\n };\n}\n\n/**\n * Returns true when the given window policy's windows match the static\n * `DEFAULT_TIME_WINDOWS` by name and minute boundaries — i.e. the user\n * has not customized them.\n */\nexport function windowPolicyMatchesDefaults(\n policy: LifeOpsWindowPolicy | null | undefined,\n): boolean {\n if (!policy || !Array.isArray(policy.windows)) return false;\n if (policy.windows.length !== DEFAULT_TIME_WINDOWS.length) return false;\n for (let i = 0; i < DEFAULT_TIME_WINDOWS.length; i++) {\n const def = DEFAULT_TIME_WINDOWS[i];\n const win = policy.windows[i];\n if (!def || !win) {\n return false;\n }\n if (\n win.name !== def.name ||\n win.startMinute !== def.startMinute ||\n win.endMinute !== def.endMinute\n ) {\n return false;\n }\n }\n return true;\n}\n\n/** Floor value for the morning window start (4:00 AM in minutes). */\nconst ADAPTIVE_MORNING_FLOOR_MINUTES = 4 * 60;\n/** Ceiling value for the morning window end (2:00 PM in minutes). */\nconst ADAPTIVE_MORNING_END_CAP_MINUTES = 14 * 60;\n/** Ceiling value for the afternoon window end (8:00 PM in minutes). */\nconst ADAPTIVE_AFTERNOON_END_CAP_MINUTES = 20 * 60;\n/** Ceiling value for the evening window end (4:00 AM next day in minutes). */\nconst ADAPTIVE_EVENING_END_CAP_MINUTES = 28 * 60;\n/** How long before typical wake/first-active to start the morning window. */\nconst ADAPTIVE_LEAD_HOURS = 0.5;\n/** Standard span of the morning and afternoon windows. */\nconst ADAPTIVE_WINDOW_SPAN_HOURS = 5;\n/** How long after typical last active to end the evening window. */\nconst ADAPTIVE_LAST_ACTIVE_LAG_HOURS = 1;\n\n/**\n * Compute a `LifeOpsWindowPolicy` whose boundaries are shifted to match\n * the user's actual rhythm as captured by the activity profile.\n *\n * Pure function — no runtime dependency. If the profile has no usable\n * rhythm data the returned policy equals `DEFAULT_TIME_WINDOWS`.\n */\nexport function computeAdaptiveWindowPolicy(\n profile: Pick<\n ActivityProfile,\n | \"typicalWakeHour\"\n | \"typicalFirstActiveHour\"\n | \"typicalLastActiveHour\"\n | \"typicalSleepHour\"\n >,\n timezone?: string | null,\n): LifeOpsWindowPolicy {\n const tz = normalizeTimeZone(timezone);\n\n // Determine morning start from wake or first-active data.\n const wakeSource = profile.typicalWakeHour ?? profile.typicalFirstActiveHour;\n if (wakeSource === null || wakeSource === undefined) {\n // No rhythm data — return defaults unchanged.\n return {\n timezone: tz,\n windows: DEFAULT_TIME_WINDOWS.map((w) => ({ ...w })),\n };\n }\n\n const morningStartMinute = Math.max(\n Math.round((wakeSource - ADAPTIVE_LEAD_HOURS) * 60),\n ADAPTIVE_MORNING_FLOOR_MINUTES,\n );\n\n const morningEndMinute = Math.min(\n morningStartMinute + ADAPTIVE_WINDOW_SPAN_HOURS * 60,\n ADAPTIVE_MORNING_END_CAP_MINUTES,\n );\n\n const afternoonStartMinute = morningEndMinute;\n const afternoonEndMinute = Math.min(\n afternoonStartMinute + ADAPTIVE_WINDOW_SPAN_HOURS * 60,\n ADAPTIVE_AFTERNOON_END_CAP_MINUTES,\n );\n\n const eveningStartMinute = afternoonEndMinute;\n\n let eveningEndMinute: number;\n if (\n profile.typicalSleepHour !== null &&\n profile.typicalSleepHour !== undefined\n ) {\n // typicalSleepHour can exceed 24 (e.g. 25 = 1 AM next day).\n eveningEndMinute = Math.min(\n Math.round(profile.typicalSleepHour * 60),\n ADAPTIVE_EVENING_END_CAP_MINUTES,\n );\n } else if (\n profile.typicalLastActiveHour !== null &&\n profile.typicalLastActiveHour !== undefined\n ) {\n eveningEndMinute = Math.min(\n Math.round(\n (profile.typicalLastActiveHour + ADAPTIVE_LAST_ACTIVE_LAG_HOURS) * 60,\n ),\n ADAPTIVE_EVENING_END_CAP_MINUTES,\n );\n } else {\n const defaultEveningWindow = DEFAULT_TIME_WINDOWS[2];\n if (!defaultEveningWindow) {\n throw new Error(\"[lifeops-defaults] missing default evening window\");\n }\n eveningEndMinute = defaultEveningWindow.endMinute;\n }\n\n // Guard: evening end must be strictly after evening start.\n if (eveningEndMinute <= eveningStartMinute) {\n eveningEndMinute = eveningStartMinute + 60;\n }\n\n // Night wraps from evening end to morning start + 24.\n const nightStartMinute = eveningEndMinute;\n const nightEndMinute = morningStartMinute + 24 * 60;\n\n return {\n timezone: tz,\n windows: [\n {\n name: \"morning\",\n label: \"Morning\",\n startMinute: morningStartMinute,\n endMinute: morningEndMinute,\n },\n {\n name: \"afternoon\",\n label: \"Afternoon\",\n startMinute: afternoonStartMinute,\n endMinute: afternoonEndMinute,\n },\n {\n name: \"evening\",\n label: \"Evening\",\n startMinute: eveningStartMinute,\n endMinute: eveningEndMinute,\n },\n {\n name: \"night\",\n label: \"Night\",\n startMinute: nightStartMinute,\n endMinute: nightEndMinute,\n },\n ],\n };\n}\n\nexport function normalizeWindowPolicy(\n policy: LifeOpsWindowPolicy | null | undefined,\n timeZone?: string | null,\n): LifeOpsWindowPolicy {\n const fallback = resolveDefaultWindowPolicy(timeZone);\n if (!policy) return fallback;\n const timezone = normalizeTimeZone(\n policy.timezone || timeZone || fallback.timezone,\n );\n const windows = Array.isArray(policy.windows)\n ? policy.windows\n .map((window) => {\n const name = window.name;\n const label =\n typeof window.label === \"string\" && window.label.trim().length > 0\n ? window.label.trim()\n : name;\n const startMinute = Number(window.startMinute);\n const endMinute = Number(window.endMinute);\n if (!Number.isFinite(startMinute) || !Number.isFinite(endMinute)) {\n return null;\n }\n if (endMinute <= startMinute) {\n return null;\n }\n return {\n name,\n label,\n startMinute,\n endMinute,\n } satisfies LifeOpsTimeWindowDefinition;\n })\n .filter(\n (window): window is LifeOpsTimeWindowDefinition => window !== null,\n )\n : [];\n if (windows.length === 0) {\n return fallback;\n }\n return {\n timezone,\n windows,\n };\n}\n\n/**\n * Default number of recent conversation lines to include in\n * LifeOps extraction prompts. Override at runtime via\n * `ELIZA_LIFEOPS_CONTEXT_WINDOW`.\n */\nconst DEFAULT_LIFEOPS_CONTEXT_WINDOW = 16;\n\n/**\n * Resolve the number of recent conversation lines to include in\n * LifeOps extraction prompts.\n *\n * Reads `ELIZA_LIFEOPS_CONTEXT_WINDOW` from the environment. Falls\n * back to {@link DEFAULT_LIFEOPS_CONTEXT_WINDOW} (16) when unset or invalid.\n */\nexport function resolveContextWindow(): number {\n const envValue = process.env.ELIZA_LIFEOPS_CONTEXT_WINDOW;\n if (envValue) {\n const parsed = parseInt(envValue, 10);\n if (Number.isFinite(parsed) && parsed > 0) {\n return parsed;\n }\n }\n return DEFAULT_LIFEOPS_CONTEXT_WINDOW;\n}\n"],"mappings":"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","names":["isValidTimeZone","normalizeTimeZone","resolveDefaultTimeZone"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { type LifeOpsIntent, type LifeOpsIntentTargetDevice } from "./intent-sync.js";
|
|
3
|
+
/**
|
|
4
|
+
* Service-layer wrappers around the local intent store. These helpers
|
|
5
|
+
* cover the management operations invoked directly by callers.
|
|
6
|
+
*/
|
|
7
|
+
export declare function acknowledgeDeviceIntent(runtime: IAgentRuntime, intentId: string, deviceId: string): Promise<void>;
|
|
8
|
+
export declare function pruneExpiredDeviceIntents(runtime: IAgentRuntime): Promise<{
|
|
9
|
+
pruned: number;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function listPendingDeviceIntents(runtime: IAgentRuntime, opts?: {
|
|
12
|
+
device?: LifeOpsIntentTargetDevice;
|
|
13
|
+
deviceId?: string;
|
|
14
|
+
limit?: number;
|
|
15
|
+
}): Promise<LifeOpsIntent[]>;
|
|
16
|
+
//# sourceMappingURL=device-bus-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-bus-service.d.ts","sourceRoot":"","sources":["../../src/lifeops/device-bus-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAG/B,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AAEH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAE7B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE;IACL,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,aAAa,EAAE,CAAC,CAE1B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
acknowledgeIntent,
|
|
3
|
+
pruneExpiredIntents,
|
|
4
|
+
receivePendingIntents
|
|
5
|
+
} from "./intent-sync.js";
|
|
6
|
+
async function acknowledgeDeviceIntent(runtime, intentId, deviceId) {
|
|
7
|
+
await acknowledgeIntent(runtime, intentId, deviceId);
|
|
8
|
+
}
|
|
9
|
+
async function pruneExpiredDeviceIntents(runtime) {
|
|
10
|
+
return pruneExpiredIntents(runtime);
|
|
11
|
+
}
|
|
12
|
+
async function listPendingDeviceIntents(runtime, opts) {
|
|
13
|
+
return receivePendingIntents(runtime, opts);
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
acknowledgeDeviceIntent,
|
|
17
|
+
listPendingDeviceIntents,
|
|
18
|
+
pruneExpiredDeviceIntents
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=device-bus-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/device-bus-service.ts"],"sourcesContent":["import type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n acknowledgeIntent,\n type LifeOpsIntent,\n type LifeOpsIntentTargetDevice,\n pruneExpiredIntents,\n receivePendingIntents,\n} from \"./intent-sync.js\";\n\n/**\n * Service-layer wrappers around the local intent store. These helpers\n * cover the management operations invoked directly by callers.\n */\n\nexport async function acknowledgeDeviceIntent(\n runtime: IAgentRuntime,\n intentId: string,\n deviceId: string,\n): Promise<void> {\n await acknowledgeIntent(runtime, intentId, deviceId);\n}\n\nexport async function pruneExpiredDeviceIntents(\n runtime: IAgentRuntime,\n): Promise<{ pruned: number }> {\n return pruneExpiredIntents(runtime);\n}\n\nexport async function listPendingDeviceIntents(\n runtime: IAgentRuntime,\n opts?: {\n device?: LifeOpsIntentTargetDevice;\n deviceId?: string;\n limit?: number;\n },\n): Promise<LifeOpsIntent[]> {\n return receivePendingIntents(runtime, opts);\n}\n"],"mappings":"AACA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAOP,eAAsB,wBACpB,SACA,UACA,UACe;AACf,QAAM,kBAAkB,SAAS,UAAU,QAAQ;AACrD;AAEA,eAAsB,0BACpB,SAC6B;AAC7B,SAAO,oBAAoB,OAAO;AACpC;AAEA,eAAsB,yBACpB,SACA,MAK0B;AAC1B,SAAO,sBAAsB,SAAS,IAAI;AAC5C;","names":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface DeviceFingerprint {
|
|
2
|
+
id: string;
|
|
3
|
+
hostname: string;
|
|
4
|
+
platform: NodeJS.Platform;
|
|
5
|
+
primaryMacAddress: string | null;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Returns a stable, process-lifetime device identifier.
|
|
9
|
+
*
|
|
10
|
+
* Resolution order:
|
|
11
|
+
* 1. `ELIZA_DEVICE_ID` env var
|
|
12
|
+
* 2. `ELIZA_DEVICE_ID` env var
|
|
13
|
+
* 3. Cached value at `<state-dir>/device-id`
|
|
14
|
+
* 4. Newly generated `<hostname>-<6-char-hex>`, persisted to that file
|
|
15
|
+
*
|
|
16
|
+
* The result is memoized for the lifetime of the process so repeated calls
|
|
17
|
+
* are cheap and guaranteed to return the same value.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getDeviceId(env?: NodeJS.ProcessEnv): string;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a coarse fingerprint of the current device suitable for logging
|
|
22
|
+
* and presence-signal aggregation. Does not include any user-identifying
|
|
23
|
+
* data beyond what `os.hostname()` / `os.networkInterfaces()` already expose.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getDeviceFingerprint(env?: NodeJS.ProcessEnv): DeviceFingerprint;
|
|
26
|
+
/**
|
|
27
|
+
* Test-only: drops the in-memory cache so the next `getDeviceId` call
|
|
28
|
+
* re-runs the env -> file -> generate resolution.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resetCachedDeviceId(): void;
|
|
31
|
+
//# sourceMappingURL=device-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-identity.d.ts","sourceRoot":"","sources":["../../src/lifeops/device-identity.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AA2CD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAsBxE;AAkBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,CAOnB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { resolveStateDir } from "@elizaos/agent";
|
|
6
|
+
const ENV_KEYS = ["ELIZA_DEVICE_ID", "ELIZA_DEVICE_ID"];
|
|
7
|
+
const CACHE_FILE_NAME = "device-id";
|
|
8
|
+
const RANDOM_SUFFIX_BYTES = 3;
|
|
9
|
+
let cachedDeviceId = null;
|
|
10
|
+
function readEnvDeviceId(env) {
|
|
11
|
+
for (const key of ENV_KEYS) {
|
|
12
|
+
const raw = env[key];
|
|
13
|
+
if (typeof raw !== "string") continue;
|
|
14
|
+
const trimmed = raw.trim();
|
|
15
|
+
if (trimmed.length > 0) {
|
|
16
|
+
return trimmed;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
function readFileDeviceId(filePath) {
|
|
22
|
+
if (!fs.existsSync(filePath)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const contents = fs.readFileSync(filePath, "utf8").trim();
|
|
26
|
+
return contents.length > 0 ? contents : null;
|
|
27
|
+
}
|
|
28
|
+
function sanitizeHostname(hostname) {
|
|
29
|
+
const cleaned = hostname.trim().replace(/[^A-Za-z0-9._-]/g, "-");
|
|
30
|
+
return cleaned.length > 0 ? cleaned : "host";
|
|
31
|
+
}
|
|
32
|
+
function generateDeviceId(hostname) {
|
|
33
|
+
const suffix = crypto.randomBytes(RANDOM_SUFFIX_BYTES).toString("hex");
|
|
34
|
+
return `${sanitizeHostname(hostname)}-${suffix}`;
|
|
35
|
+
}
|
|
36
|
+
function persistDeviceId(filePath, deviceId) {
|
|
37
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
38
|
+
fs.writeFileSync(filePath, deviceId, "utf8");
|
|
39
|
+
}
|
|
40
|
+
function deviceIdCachePath(env) {
|
|
41
|
+
return path.join(resolveStateDir(env), CACHE_FILE_NAME);
|
|
42
|
+
}
|
|
43
|
+
function getDeviceId(env = process.env) {
|
|
44
|
+
if (cachedDeviceId !== null) {
|
|
45
|
+
return cachedDeviceId;
|
|
46
|
+
}
|
|
47
|
+
const fromEnv = readEnvDeviceId(env);
|
|
48
|
+
if (fromEnv !== null) {
|
|
49
|
+
cachedDeviceId = fromEnv;
|
|
50
|
+
return cachedDeviceId;
|
|
51
|
+
}
|
|
52
|
+
const cachePath = deviceIdCachePath(env);
|
|
53
|
+
const fromFile = readFileDeviceId(cachePath);
|
|
54
|
+
if (fromFile !== null) {
|
|
55
|
+
cachedDeviceId = fromFile;
|
|
56
|
+
return cachedDeviceId;
|
|
57
|
+
}
|
|
58
|
+
const generated = generateDeviceId(os.hostname());
|
|
59
|
+
persistDeviceId(cachePath, generated);
|
|
60
|
+
cachedDeviceId = generated;
|
|
61
|
+
return cachedDeviceId;
|
|
62
|
+
}
|
|
63
|
+
function readPrimaryMacAddress() {
|
|
64
|
+
const interfaces = os.networkInterfaces();
|
|
65
|
+
for (const name of Object.keys(interfaces)) {
|
|
66
|
+
const addrs = interfaces[name];
|
|
67
|
+
if (!addrs) continue;
|
|
68
|
+
for (const addr of addrs) {
|
|
69
|
+
if (addr.internal) continue;
|
|
70
|
+
const mac = addr.mac;
|
|
71
|
+
if (typeof mac !== "string") continue;
|
|
72
|
+
if (mac.length === 0 || mac === "00:00:00:00:00:00") continue;
|
|
73
|
+
return mac;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
function getDeviceFingerprint(env = process.env) {
|
|
79
|
+
return {
|
|
80
|
+
id: getDeviceId(env),
|
|
81
|
+
hostname: os.hostname(),
|
|
82
|
+
platform: os.platform(),
|
|
83
|
+
primaryMacAddress: readPrimaryMacAddress()
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function resetCachedDeviceId() {
|
|
87
|
+
cachedDeviceId = null;
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
getDeviceFingerprint,
|
|
91
|
+
getDeviceId,
|
|
92
|
+
resetCachedDeviceId
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=device-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/device-identity.ts"],"sourcesContent":["import crypto from \"node:crypto\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { resolveStateDir } from \"@elizaos/agent\";\n\nconst ENV_KEYS = [\"ELIZA_DEVICE_ID\", \"ELIZA_DEVICE_ID\"] as const;\nconst CACHE_FILE_NAME = \"device-id\";\nconst RANDOM_SUFFIX_BYTES = 3; // 3 bytes -> 6 hex chars\n\nexport interface DeviceFingerprint {\n id: string;\n hostname: string;\n platform: NodeJS.Platform;\n primaryMacAddress: string | null;\n}\n\nlet cachedDeviceId: string | null = null;\n\nfunction readEnvDeviceId(env: NodeJS.ProcessEnv): string | null {\n for (const key of ENV_KEYS) {\n const raw = env[key];\n if (typeof raw !== \"string\") continue;\n const trimmed = raw.trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n }\n return null;\n}\n\nfunction readFileDeviceId(filePath: string): string | null {\n if (!fs.existsSync(filePath)) {\n return null;\n }\n const contents = fs.readFileSync(filePath, \"utf8\").trim();\n return contents.length > 0 ? contents : null;\n}\n\nfunction sanitizeHostname(hostname: string): string {\n const cleaned = hostname.trim().replace(/[^A-Za-z0-9._-]/g, \"-\");\n return cleaned.length > 0 ? cleaned : \"host\";\n}\n\nfunction generateDeviceId(hostname: string): string {\n const suffix = crypto.randomBytes(RANDOM_SUFFIX_BYTES).toString(\"hex\");\n return `${sanitizeHostname(hostname)}-${suffix}`;\n}\n\nfunction persistDeviceId(filePath: string, deviceId: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(filePath, deviceId, \"utf8\");\n}\n\nfunction deviceIdCachePath(env: NodeJS.ProcessEnv): string {\n return path.join(resolveStateDir(env), CACHE_FILE_NAME);\n}\n\n/**\n * Returns a stable, process-lifetime device identifier.\n *\n * Resolution order:\n * 1. `ELIZA_DEVICE_ID` env var\n * 2. `ELIZA_DEVICE_ID` env var\n * 3. Cached value at `<state-dir>/device-id`\n * 4. Newly generated `<hostname>-<6-char-hex>`, persisted to that file\n *\n * The result is memoized for the lifetime of the process so repeated calls\n * are cheap and guaranteed to return the same value.\n */\nexport function getDeviceId(env: NodeJS.ProcessEnv = process.env): string {\n if (cachedDeviceId !== null) {\n return cachedDeviceId;\n }\n\n const fromEnv = readEnvDeviceId(env);\n if (fromEnv !== null) {\n cachedDeviceId = fromEnv;\n return cachedDeviceId;\n }\n\n const cachePath = deviceIdCachePath(env);\n const fromFile = readFileDeviceId(cachePath);\n if (fromFile !== null) {\n cachedDeviceId = fromFile;\n return cachedDeviceId;\n }\n\n const generated = generateDeviceId(os.hostname());\n persistDeviceId(cachePath, generated);\n cachedDeviceId = generated;\n return cachedDeviceId;\n}\n\nfunction readPrimaryMacAddress(): string | null {\n const interfaces = os.networkInterfaces();\n for (const name of Object.keys(interfaces)) {\n const addrs = interfaces[name];\n if (!addrs) continue;\n for (const addr of addrs) {\n if (addr.internal) continue;\n const mac = addr.mac;\n if (typeof mac !== \"string\") continue;\n if (mac.length === 0 || mac === \"00:00:00:00:00:00\") continue;\n return mac;\n }\n }\n return null;\n}\n\n/**\n * Returns a coarse fingerprint of the current device suitable for logging\n * and presence-signal aggregation. Does not include any user-identifying\n * data beyond what `os.hostname()` / `os.networkInterfaces()` already expose.\n */\nexport function getDeviceFingerprint(\n env: NodeJS.ProcessEnv = process.env,\n): DeviceFingerprint {\n return {\n id: getDeviceId(env),\n hostname: os.hostname(),\n platform: os.platform(),\n primaryMacAddress: readPrimaryMacAddress(),\n };\n}\n\n/**\n * Test-only: drops the in-memory cache so the next `getDeviceId` call\n * re-runs the env -> file -> generate resolution.\n */\nexport function resetCachedDeviceId(): void {\n cachedDeviceId = null;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,QAAQ;AACf,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,uBAAuB;AAEhC,MAAM,WAAW,CAAC,mBAAmB,iBAAiB;AACtD,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAS5B,IAAI,iBAAgC;AAEpC,SAAS,gBAAgB,KAAuC;AAC9D,aAAW,OAAO,UAAU;AAC1B,UAAM,MAAM,IAAI,GAAG;AACnB,QAAI,OAAO,QAAQ,SAAU;AAC7B,UAAM,UAAU,IAAI,KAAK;AACzB,QAAI,QAAQ,SAAS,GAAG;AACtB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,UAAiC;AACzD,MAAI,CAAC,GAAG,WAAW,QAAQ,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,WAAW,GAAG,aAAa,UAAU,MAAM,EAAE,KAAK;AACxD,SAAO,SAAS,SAAS,IAAI,WAAW;AAC1C;AAEA,SAAS,iBAAiB,UAA0B;AAClD,QAAM,UAAU,SAAS,KAAK,EAAE,QAAQ,oBAAoB,GAAG;AAC/D,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;AAEA,SAAS,iBAAiB,UAA0B;AAClD,QAAM,SAAS,OAAO,YAAY,mBAAmB,EAAE,SAAS,KAAK;AACrE,SAAO,GAAG,iBAAiB,QAAQ,CAAC,IAAI,MAAM;AAChD;AAEA,SAAS,gBAAgB,UAAkB,UAAwB;AACjE,KAAG,UAAU,KAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACxD,KAAG,cAAc,UAAU,UAAU,MAAM;AAC7C;AAEA,SAAS,kBAAkB,KAAgC;AACzD,SAAO,KAAK,KAAK,gBAAgB,GAAG,GAAG,eAAe;AACxD;AAcO,SAAS,YAAY,MAAyB,QAAQ,KAAa;AACxE,MAAI,mBAAmB,MAAM;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,gBAAgB,GAAG;AACnC,MAAI,YAAY,MAAM;AACpB,qBAAiB;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,kBAAkB,GAAG;AACvC,QAAM,WAAW,iBAAiB,SAAS;AAC3C,MAAI,aAAa,MAAM;AACrB,qBAAiB;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,iBAAiB,GAAG,SAAS,CAAC;AAChD,kBAAgB,WAAW,SAAS;AACpC,mBAAiB;AACjB,SAAO;AACT;AAEA,SAAS,wBAAuC;AAC9C,QAAM,aAAa,GAAG,kBAAkB;AACxC,aAAW,QAAQ,OAAO,KAAK,UAAU,GAAG;AAC1C,UAAM,QAAQ,WAAW,IAAI;AAC7B,QAAI,CAAC,MAAO;AACZ,eAAW,QAAQ,OAAO;AACxB,UAAI,KAAK,SAAU;AACnB,YAAM,MAAM,KAAK;AACjB,UAAI,OAAO,QAAQ,SAAU;AAC7B,UAAI,IAAI,WAAW,KAAK,QAAQ,oBAAqB;AACrD,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAOO,SAAS,qBACd,MAAyB,QAAQ,KACd;AACnB,SAAO;AAAA,IACL,IAAI,YAAY,GAAG;AAAA,IACnB,UAAU,GAAG,SAAS;AAAA,IACtB,UAAU,GAAG,SAAS;AAAA,IACtB,mBAAmB,sBAAsB;AAAA,EAC3C;AACF;AAMO,SAAS,sBAA4B;AAC1C,mBAAiB;AACnB;","names":[]}
|