@elizaos/plugin-personal-assistant 2.0.3-beta.5 → 2.0.3-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/app-block.d.ts +15 -0
- package/dist/actions/app-block.d.ts.map +1 -0
- package/dist/actions/app-block.js +349 -0
- package/dist/actions/app-block.js.map +1 -0
- package/dist/actions/autofill.d.ts +20 -0
- package/dist/actions/autofill.d.ts.map +1 -0
- package/dist/actions/autofill.js +370 -0
- package/dist/actions/autofill.js.map +1 -0
- package/dist/actions/block.d.ts +30 -0
- package/dist/actions/block.d.ts.map +1 -0
- package/dist/actions/block.js +326 -0
- package/dist/actions/block.js.map +1 -0
- package/dist/actions/book-travel.d.ts +10 -0
- package/dist/actions/book-travel.d.ts.map +1 -0
- package/dist/actions/book-travel.js +467 -0
- package/dist/actions/book-travel.js.map +1 -0
- package/dist/actions/brief.d.ts +60 -0
- package/dist/actions/brief.d.ts.map +1 -0
- package/dist/actions/brief.js +485 -0
- package/dist/actions/brief.js.map +1 -0
- package/dist/actions/calendar.d.ts +22 -0
- package/dist/actions/calendar.d.ts.map +1 -0
- package/dist/actions/calendar.js +832 -0
- package/dist/actions/calendar.js.map +1 -0
- package/dist/actions/conflict-detect.d.ts +67 -0
- package/dist/actions/conflict-detect.d.ts.map +1 -0
- package/dist/actions/conflict-detect.js +310 -0
- package/dist/actions/conflict-detect.js.map +1 -0
- package/dist/actions/connector.d.ts +5 -0
- package/dist/actions/connector.d.ts.map +1 -0
- package/dist/actions/connector.js +1354 -0
- package/dist/actions/connector.js.map +1 -0
- package/dist/actions/credentials.d.ts +14 -0
- package/dist/actions/credentials.d.ts.map +1 -0
- package/dist/actions/credentials.js +191 -0
- package/dist/actions/credentials.js.map +1 -0
- package/dist/actions/document.d.ts +36 -0
- package/dist/actions/document.d.ts.map +1 -0
- package/dist/actions/document.js +613 -0
- package/dist/actions/document.js.map +1 -0
- package/dist/actions/entity.d.ts +20 -0
- package/dist/actions/entity.d.ts.map +1 -0
- package/dist/actions/entity.js +785 -0
- package/dist/actions/entity.js.map +1 -0
- package/dist/actions/health.d.ts +4 -0
- package/dist/actions/health.d.ts.map +1 -0
- package/dist/actions/health.js +37 -0
- package/dist/actions/health.js.map +1 -0
- package/dist/actions/inbox.d.ts +12 -0
- package/dist/actions/inbox.d.ts.map +1 -0
- package/dist/actions/inbox.js +13 -0
- package/dist/actions/inbox.js.map +1 -0
- package/dist/actions/lib/calendly-handler.d.ts +3 -0
- package/dist/actions/lib/calendly-handler.d.ts.map +1 -0
- package/dist/actions/lib/calendly-handler.js +506 -0
- package/dist/actions/lib/calendly-handler.js.map +1 -0
- package/dist/actions/lib/extract-goal-plan.d.ts +69 -0
- package/dist/actions/lib/extract-goal-plan.d.ts.map +1 -0
- package/dist/actions/lib/extract-goal-plan.js +488 -0
- package/dist/actions/lib/extract-goal-plan.js.map +1 -0
- package/dist/actions/lib/extract-life-operation.d.ts +18 -0
- package/dist/actions/lib/extract-life-operation.d.ts.map +1 -0
- package/dist/actions/lib/extract-life-operation.js +318 -0
- package/dist/actions/lib/extract-life-operation.js.map +1 -0
- package/dist/actions/lib/extract-task-plan.d.ts +78 -0
- package/dist/actions/lib/extract-task-plan.d.ts.map +1 -0
- package/dist/actions/lib/extract-task-plan.js +355 -0
- package/dist/actions/lib/extract-task-plan.js.map +1 -0
- package/dist/actions/lib/extract-update-fields.d.ts +27 -0
- package/dist/actions/lib/extract-update-fields.d.ts.map +1 -0
- package/dist/actions/lib/extract-update-fields.js +172 -0
- package/dist/actions/lib/extract-update-fields.js.map +1 -0
- package/dist/actions/lib/lifeops-deferred-draft.d.ts +68 -0
- package/dist/actions/lib/lifeops-deferred-draft.d.ts.map +1 -0
- package/dist/actions/lib/lifeops-deferred-draft.js +315 -0
- package/dist/actions/lib/lifeops-deferred-draft.js.map +1 -0
- package/dist/actions/lib/messaging-helpers.d.ts +20 -0
- package/dist/actions/lib/messaging-helpers.d.ts.map +1 -0
- package/dist/actions/lib/messaging-helpers.js +103 -0
- package/dist/actions/lib/messaging-helpers.js.map +1 -0
- package/dist/actions/lib/owner-policy-writes.d.ts +49 -0
- package/dist/actions/lib/owner-policy-writes.d.ts.map +1 -0
- package/dist/actions/lib/owner-policy-writes.js +157 -0
- package/dist/actions/lib/owner-policy-writes.js.map +1 -0
- package/dist/actions/lib/prompt-format.d.ts +3 -0
- package/dist/actions/lib/prompt-format.d.ts.map +1 -0
- package/dist/actions/lib/prompt-format.js +42 -0
- package/dist/actions/lib/prompt-format.js.map +1 -0
- package/dist/actions/lib/scheduling-handler.d.ts +93 -0
- package/dist/actions/lib/scheduling-handler.d.ts.map +1 -0
- package/dist/actions/lib/scheduling-handler.js +868 -0
- package/dist/actions/lib/scheduling-handler.js.map +1 -0
- package/dist/actions/life.d.ts +13 -0
- package/dist/actions/life.d.ts.map +1 -0
- package/dist/actions/life.js +2524 -0
- package/dist/actions/life.js.map +1 -0
- package/dist/actions/money.d.ts +24 -0
- package/dist/actions/money.d.ts.map +1 -0
- package/dist/actions/money.js +41 -0
- package/dist/actions/money.js.map +1 -0
- package/dist/actions/owner-surfaces.d.ts +11 -0
- package/dist/actions/owner-surfaces.d.ts.map +1 -0
- package/dist/actions/owner-surfaces.js +493 -0
- package/dist/actions/owner-surfaces.js.map +1 -0
- package/dist/actions/password-manager.d.ts +10 -0
- package/dist/actions/password-manager.d.ts.map +1 -0
- package/dist/actions/password-manager.js +195 -0
- package/dist/actions/password-manager.js.map +1 -0
- package/dist/actions/payments.d.ts +10 -0
- package/dist/actions/payments.d.ts.map +1 -0
- package/dist/actions/payments.js +5 -0
- package/dist/actions/payments.js.map +1 -0
- package/dist/actions/prioritize.d.ts +49 -0
- package/dist/actions/prioritize.d.ts.map +1 -0
- package/dist/actions/prioritize.js +313 -0
- package/dist/actions/prioritize.js.map +1 -0
- package/dist/actions/remote-desktop.d.ts +13 -0
- package/dist/actions/remote-desktop.d.ts.map +1 -0
- package/dist/actions/remote-desktop.js +11 -0
- package/dist/actions/remote-desktop.js.map +1 -0
- package/dist/actions/resolve-request.d.ts +12 -0
- package/dist/actions/resolve-request.d.ts.map +1 -0
- package/dist/actions/resolve-request.js +427 -0
- package/dist/actions/resolve-request.js.map +1 -0
- package/dist/actions/schedule.d.ts +10 -0
- package/dist/actions/schedule.d.ts.map +1 -0
- package/dist/actions/schedule.js +113 -0
- package/dist/actions/schedule.js.map +1 -0
- package/dist/actions/scheduled-task.d.ts +32 -0
- package/dist/actions/scheduled-task.d.ts.map +1 -0
- package/dist/actions/scheduled-task.js +661 -0
- package/dist/actions/scheduled-task.js.map +1 -0
- package/dist/actions/screen-time.d.ts +4 -0
- package/dist/actions/screen-time.d.ts.map +1 -0
- package/dist/actions/screen-time.js +47 -0
- package/dist/actions/screen-time.js.map +1 -0
- package/dist/actions/subscriptions.d.ts +8 -0
- package/dist/actions/subscriptions.d.ts.map +1 -0
- package/dist/actions/subscriptions.js +327 -0
- package/dist/actions/subscriptions.js.map +1 -0
- package/dist/actions/voice-call.d.ts +16 -0
- package/dist/actions/voice-call.d.ts.map +1 -0
- package/dist/actions/voice-call.js +756 -0
- package/dist/actions/voice-call.js.map +1 -0
- package/dist/actions/website-block.d.ts +15 -0
- package/dist/actions/website-block.d.ts.map +1 -0
- package/dist/actions/website-block.js +719 -0
- package/dist/actions/website-block.js.map +1 -0
- package/dist/actions/work-thread.d.ts +5 -0
- package/dist/actions/work-thread.d.ts.map +1 -0
- package/dist/actions/work-thread.js +556 -0
- package/dist/actions/work-thread.js.map +1 -0
- package/dist/activity-profile/activity-tracker-repo.d.ts +28 -0
- package/dist/activity-profile/activity-tracker-repo.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-repo.js +61 -0
- package/dist/activity-profile/activity-tracker-repo.js.map +1 -0
- package/dist/activity-profile/activity-tracker-reporting.d.ts +52 -0
- package/dist/activity-profile/activity-tracker-reporting.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-reporting.js +119 -0
- package/dist/activity-profile/activity-tracker-reporting.js.map +1 -0
- package/dist/activity-profile/activity-tracker-service.d.ts +36 -0
- package/dist/activity-profile/activity-tracker-service.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-service.js +187 -0
- package/dist/activity-profile/activity-tracker-service.js.map +1 -0
- package/dist/activity-profile/analyzer.d.ts +23 -0
- package/dist/activity-profile/analyzer.d.ts.map +1 -0
- package/dist/activity-profile/analyzer.js +485 -0
- package/dist/activity-profile/analyzer.js.map +1 -0
- package/dist/activity-profile/presence-signal-bridge-service.d.ts +14 -0
- package/dist/activity-profile/presence-signal-bridge-service.d.ts.map +1 -0
- package/dist/activity-profile/presence-signal-bridge-service.js +159 -0
- package/dist/activity-profile/presence-signal-bridge-service.js.map +1 -0
- package/dist/activity-profile/proactive-inbox-digest.d.ts +3 -0
- package/dist/activity-profile/proactive-inbox-digest.d.ts.map +1 -0
- package/dist/activity-profile/proactive-inbox-digest.js +21 -0
- package/dist/activity-profile/proactive-inbox-digest.js.map +1 -0
- package/dist/activity-profile/proactive-planner.d.ts +150 -0
- package/dist/activity-profile/proactive-planner.d.ts.map +1 -0
- package/dist/activity-profile/proactive-planner.js +529 -0
- package/dist/activity-profile/proactive-planner.js.map +1 -0
- package/dist/activity-profile/proactive-worker.d.ts +33 -0
- package/dist/activity-profile/proactive-worker.d.ts.map +1 -0
- package/dist/activity-profile/proactive-worker.js +779 -0
- package/dist/activity-profile/proactive-worker.js.map +1 -0
- package/dist/activity-profile/profile-metadata.d.ts +10 -0
- package/dist/activity-profile/profile-metadata.d.ts.map +1 -0
- package/dist/activity-profile/profile-metadata.js +16 -0
- package/dist/activity-profile/profile-metadata.js.map +1 -0
- package/dist/activity-profile/redactor.d.ts +15 -0
- package/dist/activity-profile/redactor.d.ts.map +1 -0
- package/dist/activity-profile/redactor.js +22 -0
- package/dist/activity-profile/redactor.js.map +1 -0
- package/dist/activity-profile/service.d.ts +11 -0
- package/dist/activity-profile/service.d.ts.map +1 -0
- package/dist/activity-profile/service.js +272 -0
- package/dist/activity-profile/service.js.map +1 -0
- package/dist/activity-profile/types.d.ts +97 -0
- package/dist/activity-profile/types.d.ts.map +1 -0
- package/dist/activity-profile/types.js +36 -0
- package/dist/activity-profile/types.js.map +1 -0
- package/dist/agent-lifeops.d.ts +2 -0
- package/dist/agent-lifeops.d.ts.map +1 -0
- package/dist/agent-lifeops.js +2 -0
- package/dist/agent-lifeops.js.map +1 -0
- package/dist/api/client-lifeops.d.ts +319 -0
- package/dist/api/client-lifeops.d.ts.map +1 -0
- package/dist/api/client-lifeops.js +794 -0
- package/dist/api/client-lifeops.js.map +1 -0
- package/dist/automation-node-contributor.d.ts +2 -0
- package/dist/automation-node-contributor.d.ts.map +1 -0
- package/dist/automation-node-contributor.js +184 -0
- package/dist/automation-node-contributor.js.map +1 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +18 -0
- package/dist/client.js.map +1 -0
- package/dist/components/AppBlockerSettingsCard.d.ts +3 -0
- package/dist/components/AppBlockerSettingsCard.d.ts.map +1 -0
- package/dist/components/AppBlockerSettingsCard.js +538 -0
- package/dist/components/AppBlockerSettingsCard.js.map +1 -0
- package/dist/components/WebsiteBlockerSettingsCard.d.ts +3 -0
- package/dist/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
- package/dist/components/WebsiteBlockerSettingsCard.js +148 -0
- package/dist/components/WebsiteBlockerSettingsCard.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/lifeops.d.ts +2 -0
- package/dist/contracts/lifeops.d.ts.map +1 -0
- package/dist/contracts/lifeops.js +2 -0
- package/dist/contracts/lifeops.js.map +1 -0
- package/dist/default-packs/autofill-whitelist-pack.d.ts +17 -0
- package/dist/default-packs/autofill-whitelist-pack.d.ts.map +1 -0
- package/dist/default-packs/autofill-whitelist-pack.js +56 -0
- package/dist/default-packs/autofill-whitelist-pack.js.map +1 -0
- package/dist/default-packs/consolidation-policies.d.ts +14 -0
- package/dist/default-packs/consolidation-policies.d.ts.map +1 -0
- package/dist/default-packs/consolidation-policies.js +17 -0
- package/dist/default-packs/consolidation-policies.js.map +1 -0
- package/dist/default-packs/contract-types.d.ts +200 -0
- package/dist/default-packs/contract-types.d.ts.map +1 -0
- package/dist/default-packs/contract-types.js +1 -0
- package/dist/default-packs/contract-types.js.map +1 -0
- package/dist/default-packs/daily-rhythm.d.ts +28 -0
- package/dist/default-packs/daily-rhythm.d.ts.map +1 -0
- package/dist/default-packs/daily-rhythm.js +136 -0
- package/dist/default-packs/daily-rhythm.js.map +1 -0
- package/dist/default-packs/escalation-ladders.d.ts +18 -0
- package/dist/default-packs/escalation-ladders.d.ts.map +1 -0
- package/dist/default-packs/escalation-ladders.js +17 -0
- package/dist/default-packs/escalation-ladders.js.map +1 -0
- package/dist/default-packs/executive-assistant.d.ts +50 -0
- package/dist/default-packs/executive-assistant.d.ts.map +1 -0
- package/dist/default-packs/executive-assistant.js +745 -0
- package/dist/default-packs/executive-assistant.js.map +1 -0
- package/dist/default-packs/followup-starter.d.ts +49 -0
- package/dist/default-packs/followup-starter.d.ts.map +1 -0
- package/dist/default-packs/followup-starter.js +104 -0
- package/dist/default-packs/followup-starter.js.map +1 -0
- package/dist/default-packs/habit-starters.d.ts +37 -0
- package/dist/default-packs/habit-starters.d.ts.map +1 -0
- package/dist/default-packs/habit-starters.js +255 -0
- package/dist/default-packs/habit-starters.js.map +1 -0
- package/dist/default-packs/inbox-triage-starter.d.ts +23 -0
- package/dist/default-packs/inbox-triage-starter.d.ts.map +1 -0
- package/dist/default-packs/inbox-triage-starter.js +61 -0
- package/dist/default-packs/inbox-triage-starter.js.map +1 -0
- package/dist/default-packs/index.d.ts +54 -0
- package/dist/default-packs/index.d.ts.map +1 -0
- package/dist/default-packs/index.js +150 -0
- package/dist/default-packs/index.js.map +1 -0
- package/dist/default-packs/lint.d.ts +62 -0
- package/dist/default-packs/lint.d.ts.map +1 -0
- package/dist/default-packs/lint.js +161 -0
- package/dist/default-packs/lint.js.map +1 -0
- package/dist/default-packs/morning-brief.d.ts +44 -0
- package/dist/default-packs/morning-brief.d.ts.map +1 -0
- package/dist/default-packs/morning-brief.js +69 -0
- package/dist/default-packs/morning-brief.js.map +1 -0
- package/dist/default-packs/quiet-user-watcher.d.ts +49 -0
- package/dist/default-packs/quiet-user-watcher.d.ts.map +1 -0
- package/dist/default-packs/quiet-user-watcher.js +92 -0
- package/dist/default-packs/quiet-user-watcher.js.map +1 -0
- package/dist/default-packs/registry-types.d.ts +51 -0
- package/dist/default-packs/registry-types.d.ts.map +1 -0
- package/dist/default-packs/registry-types.js +1 -0
- package/dist/default-packs/registry-types.js.map +1 -0
- package/dist/default-packs/task-definitions.d.ts +88 -0
- package/dist/default-packs/task-definitions.d.ts.map +1 -0
- package/dist/default-packs/task-definitions.js +87 -0
- package/dist/default-packs/task-definitions.js.map +1 -0
- package/dist/events/index.d.ts +34 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +30 -0
- package/dist/events/index.js.map +1 -0
- package/dist/followup/actions/listOverdueFollowups.d.ts +3 -0
- package/dist/followup/actions/listOverdueFollowups.d.ts.map +1 -0
- package/dist/followup/actions/listOverdueFollowups.js +90 -0
- package/dist/followup/actions/listOverdueFollowups.js.map +1 -0
- package/dist/followup/actions/markFollowupDone.d.ts +3 -0
- package/dist/followup/actions/markFollowupDone.d.ts.map +1 -0
- package/dist/followup/actions/markFollowupDone.js +171 -0
- package/dist/followup/actions/markFollowupDone.js.map +1 -0
- package/dist/followup/actions/setFollowupThreshold.d.ts +3 -0
- package/dist/followup/actions/setFollowupThreshold.d.ts.map +1 -0
- package/dist/followup/actions/setFollowupThreshold.js +171 -0
- package/dist/followup/actions/setFollowupThreshold.js.map +1 -0
- package/dist/followup/followup-tracker.d.ts +83 -0
- package/dist/followup/followup-tracker.d.ts.map +1 -0
- package/dist/followup/followup-tracker.js +311 -0
- package/dist/followup/followup-tracker.js.map +1 -0
- package/dist/followup/index.d.ts +5 -0
- package/dist/followup/index.d.ts.map +1 -0
- package/dist/followup/index.js +39 -0
- package/dist/followup/index.js.map +1 -0
- package/dist/hooks/connector-error.d.ts +2 -0
- package/dist/hooks/connector-error.d.ts.map +1 -0
- package/dist/hooks/connector-error.js +13 -0
- package/dist/hooks/connector-error.js.map +1 -0
- package/dist/hooks/useDiscordConnector.d.ts +11 -0
- package/dist/hooks/useDiscordConnector.d.ts.map +1 -0
- package/dist/hooks/useDiscordConnector.js +95 -0
- package/dist/hooks/useDiscordConnector.js.map +1 -0
- package/dist/hooks/useGoogleLifeOpsConnector.d.ts +23 -0
- package/dist/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
- package/dist/hooks/useGoogleLifeOpsConnector.js +630 -0
- package/dist/hooks/useGoogleLifeOpsConnector.js.map +1 -0
- package/dist/hooks/useIMessageConnector.d.ts +10 -0
- package/dist/hooks/useIMessageConnector.d.ts.map +1 -0
- package/dist/hooks/useIMessageConnector.js +57 -0
- package/dist/hooks/useIMessageConnector.js.map +1 -0
- package/dist/hooks/useInbox.d.ts +36 -0
- package/dist/hooks/useInbox.d.ts.map +1 -0
- package/dist/hooks/useInbox.js +96 -0
- package/dist/hooks/useInbox.js.map +1 -0
- package/dist/hooks/useLifeOpsActivitySignals.d.ts +2 -0
- package/dist/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsActivitySignals.js +358 -0
- package/dist/hooks/useLifeOpsActivitySignals.js.map +1 -0
- package/dist/hooks/useLifeOpsAppState.d.ts +9 -0
- package/dist/hooks/useLifeOpsAppState.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsAppState.js +79 -0
- package/dist/hooks/useLifeOpsAppState.js.map +1 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.js.map +1 -0
- package/dist/hooks/useLifeOpsXConnector.d.ts +11 -0
- package/dist/hooks/useLifeOpsXConnector.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsXConnector.js +92 -0
- package/dist/hooks/useLifeOpsXConnector.js.map +1 -0
- package/dist/hooks/useSignalConnector.d.ts +14 -0
- package/dist/hooks/useSignalConnector.d.ts.map +1 -0
- package/dist/hooks/useSignalConnector.js +89 -0
- package/dist/hooks/useSignalConnector.js.map +1 -0
- package/dist/hooks/useTelegramConnector.d.ts +14 -0
- package/dist/hooks/useTelegramConnector.d.ts.map +1 -0
- package/dist/hooks/useTelegramConnector.js +97 -0
- package/dist/hooks/useTelegramConnector.js.map +1 -0
- package/dist/hooks/useWhatsAppConnector.d.ts +8 -0
- package/dist/hooks/useWhatsAppConnector.d.ts.map +1 -0
- package/dist/hooks/useWhatsAppConnector.js +62 -0
- package/dist/hooks/useWhatsAppConnector.js.map +1 -0
- package/dist/inbox/message-fetcher.d.ts +11 -0
- package/dist/inbox/message-fetcher.d.ts.map +1 -0
- package/dist/inbox/message-fetcher.js +13 -0
- package/dist/inbox/message-fetcher.js.map +1 -0
- package/dist/inbox/repository.d.ts +11 -0
- package/dist/inbox/repository.d.ts.map +1 -0
- package/dist/inbox/repository.js +5 -0
- package/dist/inbox/repository.js.map +1 -0
- package/dist/inbox/types.d.ts +10 -0
- package/dist/inbox/types.d.ts.map +1 -0
- package/dist/inbox/types.js +2 -0
- package/dist/inbox/types.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +188 -0
- package/dist/index.js.map +1 -0
- package/dist/lifeops/access.d.ts +29 -0
- package/dist/lifeops/access.d.ts.map +1 -0
- package/dist/lifeops/access.js +56 -0
- package/dist/lifeops/access.js.map +1 -0
- package/dist/lifeops/app-state.d.ts +22 -0
- package/dist/lifeops/app-state.d.ts.map +1 -0
- package/dist/lifeops/app-state.js +67 -0
- package/dist/lifeops/app-state.js.map +1 -0
- package/dist/lifeops/apple-reminders.d.ts +67 -0
- package/dist/lifeops/apple-reminders.d.ts.map +1 -0
- package/dist/lifeops/apple-reminders.js +396 -0
- package/dist/lifeops/apple-reminders.js.map +1 -0
- package/dist/lifeops/approval-queue.d.ts +38 -0
- package/dist/lifeops/approval-queue.d.ts.map +1 -0
- package/dist/lifeops/approval-queue.js +575 -0
- package/dist/lifeops/approval-queue.js.map +1 -0
- package/dist/lifeops/approval-queue.types.d.ts +172 -0
- package/dist/lifeops/approval-queue.types.d.ts.map +1 -0
- package/dist/lifeops/approval-queue.types.js +27 -0
- package/dist/lifeops/approval-queue.types.js.map +1 -0
- package/dist/lifeops/autofill-whitelist.d.ts +20 -0
- package/dist/lifeops/autofill-whitelist.d.ts.map +1 -0
- package/dist/lifeops/autofill-whitelist.js +59 -0
- package/dist/lifeops/autofill-whitelist.js.map +1 -0
- package/dist/lifeops/background-planner-dispatch.d.ts +60 -0
- package/dist/lifeops/background-planner-dispatch.d.ts.map +1 -0
- package/dist/lifeops/background-planner-dispatch.js +113 -0
- package/dist/lifeops/background-planner-dispatch.js.map +1 -0
- package/dist/lifeops/background-planner.d.ts +140 -0
- package/dist/lifeops/background-planner.d.ts.map +1 -0
- package/dist/lifeops/background-planner.js +359 -0
- package/dist/lifeops/background-planner.js.map +1 -0
- package/dist/lifeops/bill-extraction.d.ts +46 -0
- package/dist/lifeops/bill-extraction.d.ts.map +1 -0
- package/dist/lifeops/bill-extraction.js +325 -0
- package/dist/lifeops/bill-extraction.js.map +1 -0
- package/dist/lifeops/browser-constants.d.ts +4 -0
- package/dist/lifeops/browser-constants.d.ts.map +1 -0
- package/dist/lifeops/browser-constants.js +27 -0
- package/dist/lifeops/browser-constants.js.map +1 -0
- package/dist/lifeops/browser-extension-store.d.ts +61 -0
- package/dist/lifeops/browser-extension-store.d.ts.map +1 -0
- package/dist/lifeops/browser-extension-store.js +176 -0
- package/dist/lifeops/browser-extension-store.js.map +1 -0
- package/dist/lifeops/browser-session-lifecycle.d.ts +57 -0
- package/dist/lifeops/browser-session-lifecycle.d.ts.map +1 -0
- package/dist/lifeops/browser-session-lifecycle.js +308 -0
- package/dist/lifeops/browser-session-lifecycle.js.map +1 -0
- package/dist/lifeops/bulk-review.d.ts +333 -0
- package/dist/lifeops/bulk-review.d.ts.map +1 -0
- package/dist/lifeops/bulk-review.js +1120 -0
- package/dist/lifeops/bulk-review.js.map +1 -0
- package/dist/lifeops/calendar-gate.d.ts +20 -0
- package/dist/lifeops/calendar-gate.d.ts.map +1 -0
- package/dist/lifeops/calendar-gate.js +30 -0
- package/dist/lifeops/calendar-gate.js.map +1 -0
- package/dist/lifeops/channels/contract.d.ts +47 -0
- package/dist/lifeops/channels/contract.d.ts.map +1 -0
- package/dist/lifeops/channels/contract.js +1 -0
- package/dist/lifeops/channels/contract.js.map +1 -0
- package/dist/lifeops/channels/default-pack.d.ts +26 -0
- package/dist/lifeops/channels/default-pack.d.ts.map +1 -0
- package/dist/lifeops/channels/default-pack.js +243 -0
- package/dist/lifeops/channels/default-pack.js.map +1 -0
- package/dist/lifeops/channels/index.d.ts +5 -0
- package/dist/lifeops/channels/index.d.ts.map +1 -0
- package/dist/lifeops/channels/index.js +23 -0
- package/dist/lifeops/channels/index.js.map +1 -0
- package/dist/lifeops/channels/priority-posture.d.ts +36 -0
- package/dist/lifeops/channels/priority-posture.d.ts.map +1 -0
- package/dist/lifeops/channels/priority-posture.js +27 -0
- package/dist/lifeops/channels/priority-posture.js.map +1 -0
- package/dist/lifeops/channels/registry.d.ts +7 -0
- package/dist/lifeops/channels/registry.d.ts.map +1 -0
- package/dist/lifeops/channels/registry.js +49 -0
- package/dist/lifeops/channels/registry.js.map +1 -0
- package/dist/lifeops/checkin/checkin-service.d.ts +66 -0
- package/dist/lifeops/checkin/checkin-service.d.ts.map +1 -0
- package/dist/lifeops/checkin/checkin-service.js +1084 -0
- package/dist/lifeops/checkin/checkin-service.js.map +1 -0
- package/dist/lifeops/checkin/schedule-resolver.d.ts +17 -0
- package/dist/lifeops/checkin/schedule-resolver.d.ts.map +1 -0
- package/dist/lifeops/checkin/schedule-resolver.js +26 -0
- package/dist/lifeops/checkin/schedule-resolver.js.map +1 -0
- package/dist/lifeops/checkin/types.d.ts +106 -0
- package/dist/lifeops/checkin/types.d.ts.map +1 -0
- package/dist/lifeops/checkin/types.js +1 -0
- package/dist/lifeops/checkin/types.js.map +1 -0
- package/dist/lifeops/connectors/_helpers.d.ts +51 -0
- package/dist/lifeops/connectors/_helpers.d.ts.map +1 -0
- package/dist/lifeops/connectors/_helpers.js +104 -0
- package/dist/lifeops/connectors/_helpers.js.map +1 -0
- package/dist/lifeops/connectors/calendly.d.ts +11 -0
- package/dist/lifeops/connectors/calendly.d.ts.map +1 -0
- package/dist/lifeops/connectors/calendly.js +61 -0
- package/dist/lifeops/connectors/calendly.js.map +1 -0
- package/dist/lifeops/connectors/contract.d.ts +88 -0
- package/dist/lifeops/connectors/contract.d.ts.map +1 -0
- package/dist/lifeops/connectors/contract.js +1 -0
- package/dist/lifeops/connectors/contract.js.map +1 -0
- package/dist/lifeops/connectors/default-pack.d.ts +35 -0
- package/dist/lifeops/connectors/default-pack.d.ts.map +1 -0
- package/dist/lifeops/connectors/default-pack.js +37 -0
- package/dist/lifeops/connectors/default-pack.js.map +1 -0
- package/dist/lifeops/connectors/discord.d.ts +8 -0
- package/dist/lifeops/connectors/discord.d.ts.map +1 -0
- package/dist/lifeops/connectors/discord.js +53 -0
- package/dist/lifeops/connectors/discord.js.map +1 -0
- package/dist/lifeops/connectors/dispatch-policy.d.ts +75 -0
- package/dist/lifeops/connectors/dispatch-policy.d.ts.map +1 -0
- package/dist/lifeops/connectors/dispatch-policy.js +35 -0
- package/dist/lifeops/connectors/dispatch-policy.js.map +1 -0
- package/dist/lifeops/connectors/duffel.d.ts +11 -0
- package/dist/lifeops/connectors/duffel.d.ts.map +1 -0
- package/dist/lifeops/connectors/duffel.js +74 -0
- package/dist/lifeops/connectors/duffel.js.map +1 -0
- package/dist/lifeops/connectors/google.d.ts +27 -0
- package/dist/lifeops/connectors/google.d.ts.map +1 -0
- package/dist/lifeops/connectors/google.js +80 -0
- package/dist/lifeops/connectors/google.js.map +1 -0
- package/dist/lifeops/connectors/imessage.d.ts +11 -0
- package/dist/lifeops/connectors/imessage.d.ts.map +1 -0
- package/dist/lifeops/connectors/imessage.js +55 -0
- package/dist/lifeops/connectors/imessage.js.map +1 -0
- package/dist/lifeops/connectors/index.d.ts +5 -0
- package/dist/lifeops/connectors/index.d.ts.map +1 -0
- package/dist/lifeops/connectors/index.js +23 -0
- package/dist/lifeops/connectors/index.js.map +1 -0
- package/dist/lifeops/connectors/mockoon-redirect.d.ts +54 -0
- package/dist/lifeops/connectors/mockoon-redirect.d.ts.map +1 -0
- package/dist/lifeops/connectors/mockoon-redirect.js +71 -0
- package/dist/lifeops/connectors/mockoon-redirect.js.map +1 -0
- package/dist/lifeops/connectors/registry.d.ts +7 -0
- package/dist/lifeops/connectors/registry.d.ts.map +1 -0
- package/dist/lifeops/connectors/registry.js +55 -0
- package/dist/lifeops/connectors/registry.js.map +1 -0
- package/dist/lifeops/connectors/signal.d.ts +8 -0
- package/dist/lifeops/connectors/signal.d.ts.map +1 -0
- package/dist/lifeops/connectors/signal.js +60 -0
- package/dist/lifeops/connectors/signal.js.map +1 -0
- package/dist/lifeops/connectors/telegram.d.ts +12 -0
- package/dist/lifeops/connectors/telegram.d.ts.map +1 -0
- package/dist/lifeops/connectors/telegram.js +65 -0
- package/dist/lifeops/connectors/telegram.js.map +1 -0
- package/dist/lifeops/connectors/twilio.d.ts +15 -0
- package/dist/lifeops/connectors/twilio.d.ts.map +1 -0
- package/dist/lifeops/connectors/twilio.js +126 -0
- package/dist/lifeops/connectors/twilio.js.map +1 -0
- package/dist/lifeops/connectors/whatsapp.d.ts +10 -0
- package/dist/lifeops/connectors/whatsapp.d.ts.map +1 -0
- package/dist/lifeops/connectors/whatsapp.js +56 -0
- package/dist/lifeops/connectors/whatsapp.js.map +1 -0
- package/dist/lifeops/connectors/x.d.ts +8 -0
- package/dist/lifeops/connectors/x.d.ts.map +1 -0
- package/dist/lifeops/connectors/x.js +62 -0
- package/dist/lifeops/connectors/x.js.map +1 -0
- package/dist/lifeops/contact-route-policy.d.ts +27 -0
- package/dist/lifeops/contact-route-policy.d.ts.map +1 -0
- package/dist/lifeops/contact-route-policy.js +153 -0
- package/dist/lifeops/contact-route-policy.js.map +1 -0
- package/dist/lifeops/continuity-probe.d.ts +49 -0
- package/dist/lifeops/continuity-probe.d.ts.map +1 -0
- package/dist/lifeops/continuity-probe.js +161 -0
- package/dist/lifeops/continuity-probe.js.map +1 -0
- package/dist/lifeops/cross-channel-search.d.ts +108 -0
- package/dist/lifeops/cross-channel-search.d.ts.map +1 -0
- package/dist/lifeops/cross-channel-search.js +888 -0
- package/dist/lifeops/cross-channel-search.js.map +1 -0
- package/dist/lifeops/defaults.d.ts +30 -0
- package/dist/lifeops/defaults.d.ts.map +1 -0
- package/dist/lifeops/defaults.js +206 -0
- package/dist/lifeops/defaults.js.map +1 -0
- package/dist/lifeops/device-bus-service.d.ts +16 -0
- package/dist/lifeops/device-bus-service.d.ts.map +1 -0
- package/dist/lifeops/device-bus-service.js +20 -0
- package/dist/lifeops/device-bus-service.js.map +1 -0
- package/dist/lifeops/device-identity.d.ts +31 -0
- package/dist/lifeops/device-identity.d.ts.map +1 -0
- package/dist/lifeops/device-identity.js +94 -0
- package/dist/lifeops/device-identity.js.map +1 -0
- package/dist/lifeops/document-review.d.ts +264 -0
- package/dist/lifeops/document-review.d.ts.map +1 -0
- package/dist/lifeops/document-review.js +925 -0
- package/dist/lifeops/document-review.js.map +1 -0
- package/dist/lifeops/email-classifier.d.ts +9 -0
- package/dist/lifeops/email-classifier.d.ts.map +1 -0
- package/dist/lifeops/email-classifier.js +15 -0
- package/dist/lifeops/email-classifier.js.map +1 -0
- package/dist/lifeops/email-curation.d.ts +13 -0
- package/dist/lifeops/email-curation.d.ts.map +1 -0
- package/dist/lifeops/email-curation.js +2 -0
- package/dist/lifeops/email-curation.js.map +1 -0
- package/dist/lifeops/email-unsubscribe-types.d.ts +7 -0
- package/dist/lifeops/email-unsubscribe-types.d.ts.map +1 -0
- package/dist/lifeops/email-unsubscribe-types.js +1 -0
- package/dist/lifeops/email-unsubscribe-types.js.map +1 -0
- package/dist/lifeops/enforcement-windows.d.ts +34 -0
- package/dist/lifeops/enforcement-windows.d.ts.map +1 -0
- package/dist/lifeops/enforcement-windows.js +80 -0
- package/dist/lifeops/enforcement-windows.js.map +1 -0
- package/dist/lifeops/engine.d.ts +8 -0
- package/dist/lifeops/engine.d.ts.map +1 -0
- package/dist/lifeops/engine.js +540 -0
- package/dist/lifeops/engine.js.map +1 -0
- package/dist/lifeops/entities/index.d.ts +4 -0
- package/dist/lifeops/entities/index.d.ts.map +1 -0
- package/dist/lifeops/entities/index.js +29 -0
- package/dist/lifeops/entities/index.js.map +1 -0
- package/dist/lifeops/entities/merge.d.ts +9 -0
- package/dist/lifeops/entities/merge.d.ts.map +1 -0
- package/dist/lifeops/entities/merge.js +17 -0
- package/dist/lifeops/entities/merge.js.map +1 -0
- package/dist/lifeops/entities/store.d.ts +13 -0
- package/dist/lifeops/entities/store.d.ts.map +1 -0
- package/dist/lifeops/entities/store.js +7 -0
- package/dist/lifeops/entities/store.js.map +1 -0
- package/dist/lifeops/entities/types.d.ts +9 -0
- package/dist/lifeops/entities/types.d.ts.map +1 -0
- package/dist/lifeops/entities/types.js +13 -0
- package/dist/lifeops/entities/types.js.map +1 -0
- package/dist/lifeops/entities/voice-attribution.d.ts +70 -0
- package/dist/lifeops/entities/voice-attribution.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-attribution.js +121 -0
- package/dist/lifeops/entities/voice-attribution.js.map +1 -0
- package/dist/lifeops/entities/voice-observer-bridge.d.ts +32 -0
- package/dist/lifeops/entities/voice-observer-bridge.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-observer-bridge.js +68 -0
- package/dist/lifeops/entities/voice-observer-bridge.js.map +1 -0
- package/dist/lifeops/entities/voice-observer.d.ts +72 -0
- package/dist/lifeops/entities/voice-observer.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-observer.js +97 -0
- package/dist/lifeops/entities/voice-observer.js.map +1 -0
- package/dist/lifeops/escalation-ladders.d.ts +28 -0
- package/dist/lifeops/escalation-ladders.d.ts.map +1 -0
- package/dist/lifeops/escalation-ladders.js +17 -0
- package/dist/lifeops/escalation-ladders.js.map +1 -0
- package/dist/lifeops/fda-probe.d.ts +23 -0
- package/dist/lifeops/fda-probe.d.ts.map +1 -0
- package/dist/lifeops/fda-probe.js +59 -0
- package/dist/lifeops/fda-probe.js.map +1 -0
- package/dist/lifeops/feature-flags.d.ts +24 -0
- package/dist/lifeops/feature-flags.d.ts.map +1 -0
- package/dist/lifeops/feature-flags.js +261 -0
- package/dist/lifeops/feature-flags.js.map +1 -0
- package/dist/lifeops/feature-flags.types.d.ts +156 -0
- package/dist/lifeops/feature-flags.types.d.ts.map +1 -0
- package/dist/lifeops/feature-flags.types.js +129 -0
- package/dist/lifeops/feature-flags.types.js.map +1 -0
- package/dist/lifeops/first-run/defaults.d.ts +57 -0
- package/dist/lifeops/first-run/defaults.d.ts.map +1 -0
- package/dist/lifeops/first-run/defaults.js +159 -0
- package/dist/lifeops/first-run/defaults.js.map +1 -0
- package/dist/lifeops/first-run/questions.d.ts +74 -0
- package/dist/lifeops/first-run/questions.d.ts.map +1 -0
- package/dist/lifeops/first-run/questions.js +184 -0
- package/dist/lifeops/first-run/questions.js.map +1 -0
- package/dist/lifeops/first-run/replay.d.ts +41 -0
- package/dist/lifeops/first-run/replay.d.ts.map +1 -0
- package/dist/lifeops/first-run/replay.js +34 -0
- package/dist/lifeops/first-run/replay.js.map +1 -0
- package/dist/lifeops/first-run/service.d.ts +147 -0
- package/dist/lifeops/first-run/service.d.ts.map +1 -0
- package/dist/lifeops/first-run/service.js +455 -0
- package/dist/lifeops/first-run/service.js.map +1 -0
- package/dist/lifeops/first-run/state.d.ts +36 -0
- package/dist/lifeops/first-run/state.d.ts.map +1 -0
- package/dist/lifeops/first-run/state.js +128 -0
- package/dist/lifeops/first-run/state.js.map +1 -0
- package/dist/lifeops/global-pause/store.d.ts +22 -0
- package/dist/lifeops/global-pause/store.d.ts.map +1 -0
- package/dist/lifeops/global-pause/store.js +18 -0
- package/dist/lifeops/global-pause/store.js.map +1 -0
- package/dist/lifeops/goal-grounding.d.ts +9 -0
- package/dist/lifeops/goal-grounding.d.ts.map +1 -0
- package/dist/lifeops/goal-grounding.js +19 -0
- package/dist/lifeops/goal-grounding.js.map +1 -0
- package/dist/lifeops/goal-semantic-evaluator.d.ts +8 -0
- package/dist/lifeops/goal-semantic-evaluator.d.ts.map +1 -0
- package/dist/lifeops/goal-semantic-evaluator.js +7 -0
- package/dist/lifeops/goal-semantic-evaluator.js.map +1 -0
- package/dist/lifeops/google/format-helpers.d.ts +63 -0
- package/dist/lifeops/google/format-helpers.d.ts.map +1 -0
- package/dist/lifeops/google/format-helpers.js +597 -0
- package/dist/lifeops/google/format-helpers.js.map +1 -0
- package/dist/lifeops/google-plugin-delegates.d.ts +59 -0
- package/dist/lifeops/google-plugin-delegates.d.ts.map +1 -0
- package/dist/lifeops/google-plugin-delegates.js +408 -0
- package/dist/lifeops/google-plugin-delegates.js.map +1 -0
- package/dist/lifeops/google-scopes.d.ts +15 -0
- package/dist/lifeops/google-scopes.d.ts.map +1 -0
- package/dist/lifeops/google-scopes.js +118 -0
- package/dist/lifeops/google-scopes.js.map +1 -0
- package/dist/lifeops/handoff/store.d.ts +23 -0
- package/dist/lifeops/handoff/store.d.ts.map +1 -0
- package/dist/lifeops/handoff/store.js +20 -0
- package/dist/lifeops/handoff/store.js.map +1 -0
- package/dist/lifeops/i18n/localized-examples-provider.d.ts +16 -0
- package/dist/lifeops/i18n/localized-examples-provider.d.ts.map +1 -0
- package/dist/lifeops/i18n/localized-examples-provider.js +33 -0
- package/dist/lifeops/i18n/localized-examples-provider.js.map +1 -0
- package/dist/lifeops/i18n/localized-examples-resolver.d.ts +32 -0
- package/dist/lifeops/i18n/localized-examples-resolver.d.ts.map +1 -0
- package/dist/lifeops/i18n/localized-examples-resolver.js +28 -0
- package/dist/lifeops/i18n/localized-examples-resolver.js.map +1 -0
- package/dist/lifeops/i18n/prompt-registry.d.ts +64 -0
- package/dist/lifeops/i18n/prompt-registry.d.ts.map +1 -0
- package/dist/lifeops/i18n/prompt-registry.js +283 -0
- package/dist/lifeops/i18n/prompt-registry.js.map +1 -0
- package/dist/lifeops/imessage-outbound-probe.d.ts +7 -0
- package/dist/lifeops/imessage-outbound-probe.d.ts.map +1 -0
- package/dist/lifeops/imessage-outbound-probe.js +81 -0
- package/dist/lifeops/imessage-outbound-probe.js.map +1 -0
- package/dist/lifeops/index.d.ts +24 -0
- package/dist/lifeops/index.d.ts.map +1 -0
- package/dist/lifeops/index.js +24 -0
- package/dist/lifeops/index.js.map +1 -0
- package/dist/lifeops/intent-sync.d.ts +64 -0
- package/dist/lifeops/intent-sync.d.ts.map +1 -0
- package/dist/lifeops/intent-sync.js +321 -0
- package/dist/lifeops/intent-sync.js.map +1 -0
- package/dist/lifeops/messaging/index.d.ts +2 -0
- package/dist/lifeops/messaging/index.d.ts.map +1 -0
- package/dist/lifeops/messaging/index.js +5 -0
- package/dist/lifeops/messaging/index.js.map +1 -0
- package/dist/lifeops/messaging/owner-send-policy.d.ts +3 -0
- package/dist/lifeops/messaging/owner-send-policy.d.ts.map +1 -0
- package/dist/lifeops/messaging/owner-send-policy.js +83 -0
- package/dist/lifeops/messaging/owner-send-policy.js.map +1 -0
- package/dist/lifeops/notifications-push.d.ts +37 -0
- package/dist/lifeops/notifications-push.d.ts.map +1 -0
- package/dist/lifeops/notifications-push.js +95 -0
- package/dist/lifeops/notifications-push.js.map +1 -0
- package/dist/lifeops/optimized-prompt-instructions.d.ts +5 -0
- package/dist/lifeops/optimized-prompt-instructions.d.ts.map +1 -0
- package/dist/lifeops/optimized-prompt-instructions.js +48 -0
- package/dist/lifeops/optimized-prompt-instructions.js.map +1 -0
- package/dist/lifeops/owner/fact-store.d.ts +143 -0
- package/dist/lifeops/owner/fact-store.d.ts.map +1 -0
- package/dist/lifeops/owner/fact-store.js +446 -0
- package/dist/lifeops/owner/fact-store.js.map +1 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.d.ts +3 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.d.ts.map +1 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.js +241 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.js.map +1 -0
- package/dist/lifeops/owner-profile.d.ts +61 -0
- package/dist/lifeops/owner-profile.d.ts.map +1 -0
- package/dist/lifeops/owner-profile.js +407 -0
- package/dist/lifeops/owner-profile.js.map +1 -0
- package/dist/lifeops/pending-prompts/store.d.ts +23 -0
- package/dist/lifeops/pending-prompts/store.d.ts.map +1 -0
- package/dist/lifeops/pending-prompts/store.js +16 -0
- package/dist/lifeops/pending-prompts/store.js.map +1 -0
- package/dist/lifeops/policy-memory.d.ts +190 -0
- package/dist/lifeops/policy-memory.d.ts.map +1 -0
- package/dist/lifeops/policy-memory.js +1026 -0
- package/dist/lifeops/policy-memory.js.map +1 -0
- package/dist/lifeops/priority-scoring.d.ts +51 -0
- package/dist/lifeops/priority-scoring.d.ts.map +1 -0
- package/dist/lifeops/priority-scoring.js +305 -0
- package/dist/lifeops/priority-scoring.js.map +1 -0
- package/dist/lifeops/privacy-egress.d.ts +92 -0
- package/dist/lifeops/privacy-egress.d.ts.map +1 -0
- package/dist/lifeops/privacy-egress.js +230 -0
- package/dist/lifeops/privacy-egress.js.map +1 -0
- package/dist/lifeops/privacy.d.ts +49 -0
- package/dist/lifeops/privacy.d.ts.map +1 -0
- package/dist/lifeops/privacy.js +66 -0
- package/dist/lifeops/privacy.js.map +1 -0
- package/dist/lifeops/redact-sensitive-data.d.ts +32 -0
- package/dist/lifeops/redact-sensitive-data.d.ts.map +1 -0
- package/dist/lifeops/redact-sensitive-data.js +98 -0
- package/dist/lifeops/redact-sensitive-data.js.map +1 -0
- package/dist/lifeops/registries/app-blocker-contribution.d.ts +13 -0
- package/dist/lifeops/registries/app-blocker-contribution.d.ts.map +1 -0
- package/dist/lifeops/registries/app-blocker-contribution.js +73 -0
- package/dist/lifeops/registries/app-blocker-contribution.js.map +1 -0
- package/dist/lifeops/registries/blocker-registry.d.ts +76 -0
- package/dist/lifeops/registries/blocker-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/blocker-registry.js +40 -0
- package/dist/lifeops/registries/blocker-registry.js.map +1 -0
- package/dist/lifeops/registries/event-kind-registry.d.ts +57 -0
- package/dist/lifeops/registries/event-kind-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/event-kind-registry.js +82 -0
- package/dist/lifeops/registries/event-kind-registry.js.map +1 -0
- package/dist/lifeops/registries/family-registry.d.ts +72 -0
- package/dist/lifeops/registries/family-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/family-registry.js +98 -0
- package/dist/lifeops/registries/family-registry.js.map +1 -0
- package/dist/lifeops/registries/feature-flag-default-pack.d.ts +32 -0
- package/dist/lifeops/registries/feature-flag-default-pack.d.ts.map +1 -0
- package/dist/lifeops/registries/feature-flag-default-pack.js +36 -0
- package/dist/lifeops/registries/feature-flag-default-pack.js.map +1 -0
- package/dist/lifeops/registries/feature-flag-registry.d.ts +76 -0
- package/dist/lifeops/registries/feature-flag-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/feature-flag-registry.js +68 -0
- package/dist/lifeops/registries/feature-flag-registry.js.map +1 -0
- package/dist/lifeops/registries/index.d.ts +24 -0
- package/dist/lifeops/registries/index.d.ts.map +1 -0
- package/dist/lifeops/registries/index.js +115 -0
- package/dist/lifeops/registries/index.js.map +1 -0
- package/dist/lifeops/registries/website-blocker-contribution.d.ts +21 -0
- package/dist/lifeops/registries/website-blocker-contribution.d.ts.map +1 -0
- package/dist/lifeops/registries/website-blocker-contribution.js +76 -0
- package/dist/lifeops/registries/website-blocker-contribution.js.map +1 -0
- package/dist/lifeops/registries/workflow-step-default-pack.d.ts +30 -0
- package/dist/lifeops/registries/workflow-step-default-pack.d.ts.map +1 -0
- package/dist/lifeops/registries/workflow-step-default-pack.js +315 -0
- package/dist/lifeops/registries/workflow-step-default-pack.js.map +1 -0
- package/dist/lifeops/registries/workflow-step-registry.d.ts +101 -0
- package/dist/lifeops/registries/workflow-step-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/workflow-step-registry.js +56 -0
- package/dist/lifeops/registries/workflow-step-registry.js.map +1 -0
- package/dist/lifeops/relationships/extraction.d.ts +77 -0
- package/dist/lifeops/relationships/extraction.d.ts.map +1 -0
- package/dist/lifeops/relationships/extraction.js +146 -0
- package/dist/lifeops/relationships/extraction.js.map +1 -0
- package/dist/lifeops/relationships/index.d.ts +4 -0
- package/dist/lifeops/relationships/index.d.ts.map +1 -0
- package/dist/lifeops/relationships/index.js +19 -0
- package/dist/lifeops/relationships/index.js.map +1 -0
- package/dist/lifeops/relationships/mapping.d.ts +34 -0
- package/dist/lifeops/relationships/mapping.d.ts.map +1 -0
- package/dist/lifeops/relationships/mapping.js +87 -0
- package/dist/lifeops/relationships/mapping.js.map +1 -0
- package/dist/lifeops/relationships/store.d.ts +12 -0
- package/dist/lifeops/relationships/store.d.ts.map +1 -0
- package/dist/lifeops/relationships/store.js +5 -0
- package/dist/lifeops/relationships/store.js.map +1 -0
- package/dist/lifeops/relationships/types.d.ts +9 -0
- package/dist/lifeops/relationships/types.d.ts.map +1 -0
- package/dist/lifeops/relationships/types.js +11 -0
- package/dist/lifeops/relationships/types.js.map +1 -0
- package/dist/lifeops/relative-schedule-resolver.d.ts +13 -0
- package/dist/lifeops/relative-schedule-resolver.d.ts.map +1 -0
- package/dist/lifeops/relative-schedule-resolver.js +107 -0
- package/dist/lifeops/relative-schedule-resolver.js.map +1 -0
- package/dist/lifeops/relative-time.d.ts +15 -0
- package/dist/lifeops/relative-time.d.ts.map +1 -0
- package/dist/lifeops/relative-time.js +191 -0
- package/dist/lifeops/relative-time.js.map +1 -0
- package/dist/lifeops/repository.d.ts +638 -0
- package/dist/lifeops/repository.d.ts.map +1 -0
- package/dist/lifeops/repository.js +6289 -0
- package/dist/lifeops/repository.js.map +1 -0
- package/dist/lifeops/runtime-cache.d.ts +4 -0
- package/dist/lifeops/runtime-cache.d.ts.map +1 -0
- package/dist/lifeops/runtime-cache.js +7 -0
- package/dist/lifeops/runtime-cache.js.map +1 -0
- package/dist/lifeops/runtime-service-delegates.d.ts +236 -0
- package/dist/lifeops/runtime-service-delegates.d.ts.map +1 -0
- package/dist/lifeops/runtime-service-delegates.js +839 -0
- package/dist/lifeops/runtime-service-delegates.js.map +1 -0
- package/dist/lifeops/runtime.d.ts +13 -0
- package/dist/lifeops/runtime.d.ts.map +1 -0
- package/dist/lifeops/runtime.js +104 -0
- package/dist/lifeops/runtime.js.map +1 -0
- package/dist/lifeops/schedule-insight.d.ts +133 -0
- package/dist/lifeops/schedule-insight.d.ts.map +1 -0
- package/dist/lifeops/schedule-insight.js +726 -0
- package/dist/lifeops/schedule-insight.js.map +1 -0
- package/dist/lifeops/schedule-state.d.ts +39 -0
- package/dist/lifeops/schedule-state.d.ts.map +1 -0
- package/dist/lifeops/schedule-state.js +671 -0
- package/dist/lifeops/schedule-state.js.map +1 -0
- package/dist/lifeops/schedule-sync-config.d.ts +3 -0
- package/dist/lifeops/schedule-sync-config.d.ts.map +1 -0
- package/dist/lifeops/schedule-sync-config.js +23 -0
- package/dist/lifeops/schedule-sync-config.js.map +1 -0
- package/dist/lifeops/schedule-sync-contracts.d.ts +2 -0
- package/dist/lifeops/schedule-sync-contracts.d.ts.map +1 -0
- package/dist/lifeops/schedule-sync-contracts.js +2 -0
- package/dist/lifeops/schedule-sync-contracts.js.map +1 -0
- package/dist/lifeops/scheduled-task/index.d.ts +13 -0
- package/dist/lifeops/scheduled-task/index.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/index.js +14 -0
- package/dist/lifeops/scheduled-task/index.js.map +1 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.d.ts +33 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.js +334 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.js.map +1 -0
- package/dist/lifeops/scheduled-task/scheduler.d.ts +28 -0
- package/dist/lifeops/scheduled-task/scheduler.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/scheduler.js +202 -0
- package/dist/lifeops/scheduled-task/scheduler.js.map +1 -0
- package/dist/lifeops/scheduled-task/service.d.ts +61 -0
- package/dist/lifeops/scheduled-task/service.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/service.js +64 -0
- package/dist/lifeops/scheduled-task/service.js.map +1 -0
- package/dist/lifeops/scheduler-task.d.ts +19 -0
- package/dist/lifeops/scheduler-task.d.ts.map +1 -0
- package/dist/lifeops/scheduler-task.js +201 -0
- package/dist/lifeops/scheduler-task.js.map +1 -0
- package/dist/lifeops/schema.d.ts +28068 -0
- package/dist/lifeops/schema.d.ts.map +1 -0
- package/dist/lifeops/schema.js +1689 -0
- package/dist/lifeops/schema.js.map +1 -0
- package/dist/lifeops/screen-context.d.ts +66 -0
- package/dist/lifeops/screen-context.d.ts.map +1 -0
- package/dist/lifeops/screen-context.js +347 -0
- package/dist/lifeops/screen-context.js.map +1 -0
- package/dist/lifeops/seed-routine-migration/migrator.d.ts +113 -0
- package/dist/lifeops/seed-routine-migration/migrator.d.ts.map +1 -0
- package/dist/lifeops/seed-routine-migration/migrator.js +142 -0
- package/dist/lifeops/seed-routine-migration/migrator.js.map +1 -0
- package/dist/lifeops/seed-routines.d.ts +24 -0
- package/dist/lifeops/seed-routines.d.ts.map +1 -0
- package/dist/lifeops/seed-routines.js +140 -0
- package/dist/lifeops/seed-routines.js.map +1 -0
- package/dist/lifeops/send-policy/contract.d.ts +81 -0
- package/dist/lifeops/send-policy/contract.d.ts.map +1 -0
- package/dist/lifeops/send-policy/contract.js +1 -0
- package/dist/lifeops/send-policy/contract.js.map +1 -0
- package/dist/lifeops/send-policy/index.d.ts +3 -0
- package/dist/lifeops/send-policy/index.d.ts.map +1 -0
- package/dist/lifeops/send-policy/index.js +13 -0
- package/dist/lifeops/send-policy/index.js.map +1 -0
- package/dist/lifeops/send-policy/registry.d.ts +7 -0
- package/dist/lifeops/send-policy/registry.d.ts.map +1 -0
- package/dist/lifeops/send-policy/registry.js +62 -0
- package/dist/lifeops/send-policy/registry.js.map +1 -0
- package/dist/lifeops/sensitive-request-delivery.d.ts +46 -0
- package/dist/lifeops/sensitive-request-delivery.d.ts.map +1 -0
- package/dist/lifeops/sensitive-request-delivery.js +103 -0
- package/dist/lifeops/sensitive-request-delivery.js.map +1 -0
- package/dist/lifeops/service-constants.d.ts +10 -0
- package/dist/lifeops/service-constants.d.ts.map +1 -0
- package/dist/lifeops/service-constants.js +129 -0
- package/dist/lifeops/service-constants.js.map +1 -0
- package/dist/lifeops/service-helpers-browser.d.ts +41 -0
- package/dist/lifeops/service-helpers-browser.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-browser.js +290 -0
- package/dist/lifeops/service-helpers-browser.js.map +1 -0
- package/dist/lifeops/service-helpers-misc.d.ts +68 -0
- package/dist/lifeops/service-helpers-misc.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-misc.js +531 -0
- package/dist/lifeops/service-helpers-misc.js.map +1 -0
- package/dist/lifeops/service-helpers-occurrence.d.ts +23 -0
- package/dist/lifeops/service-helpers-occurrence.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-occurrence.js +257 -0
- package/dist/lifeops/service-helpers-occurrence.js.map +1 -0
- package/dist/lifeops/service-helpers-reminder.d.ts +260 -0
- package/dist/lifeops/service-helpers-reminder.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-reminder.js +1186 -0
- package/dist/lifeops/service-helpers-reminder.js.map +1 -0
- package/dist/lifeops/service-mixin-browser.d.ts +31 -0
- package/dist/lifeops/service-mixin-browser.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-browser.js +975 -0
- package/dist/lifeops/service-mixin-browser.js.map +1 -0
- package/dist/lifeops/service-mixin-calendar.d.ts +53 -0
- package/dist/lifeops/service-mixin-calendar.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-calendar.js +68 -0
- package/dist/lifeops/service-mixin-calendar.js.map +1 -0
- package/dist/lifeops/service-mixin-core.d.ts +51 -0
- package/dist/lifeops/service-mixin-core.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-core.js +500 -0
- package/dist/lifeops/service-mixin-core.js.map +1 -0
- package/dist/lifeops/service-mixin-definitions.d.ts +14 -0
- package/dist/lifeops/service-mixin-definitions.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-definitions.js +470 -0
- package/dist/lifeops/service-mixin-definitions.js.map +1 -0
- package/dist/lifeops/service-mixin-discord.d.ts +49 -0
- package/dist/lifeops/service-mixin-discord.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-discord.js +1253 -0
- package/dist/lifeops/service-mixin-discord.js.map +1 -0
- package/dist/lifeops/service-mixin-drive.d.ts +96 -0
- package/dist/lifeops/service-mixin-drive.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-drive.js +213 -0
- package/dist/lifeops/service-mixin-drive.js.map +1 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.d.ts +23 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.js +27 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.js.map +1 -0
- package/dist/lifeops/service-mixin-gmail.d.ts +43 -0
- package/dist/lifeops/service-mixin-gmail.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-gmail.js +727 -0
- package/dist/lifeops/service-mixin-gmail.js.map +1 -0
- package/dist/lifeops/service-mixin-goals.d.ts +22 -0
- package/dist/lifeops/service-mixin-goals.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-goals.js +884 -0
- package/dist/lifeops/service-mixin-goals.js.map +1 -0
- package/dist/lifeops/service-mixin-google.d.ts +13 -0
- package/dist/lifeops/service-mixin-google.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-google.js +398 -0
- package/dist/lifeops/service-mixin-google.js.map +1 -0
- package/dist/lifeops/service-mixin-health.d.ts +27 -0
- package/dist/lifeops/service-mixin-health.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-health.js +670 -0
- package/dist/lifeops/service-mixin-health.js.map +1 -0
- package/dist/lifeops/service-mixin-imessage.d.ts +106 -0
- package/dist/lifeops/service-mixin-imessage.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-imessage.js +303 -0
- package/dist/lifeops/service-mixin-imessage.js.map +1 -0
- package/dist/lifeops/service-mixin-inbox.d.ts +55 -0
- package/dist/lifeops/service-mixin-inbox.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-inbox.js +597 -0
- package/dist/lifeops/service-mixin-inbox.js.map +1 -0
- package/dist/lifeops/service-mixin-relationships.d.ts +65 -0
- package/dist/lifeops/service-mixin-relationships.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-relationships.js +150 -0
- package/dist/lifeops/service-mixin-relationships.js.map +1 -0
- package/dist/lifeops/service-mixin-reminders.d.ts +62 -0
- package/dist/lifeops/service-mixin-reminders.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-reminders.js +4003 -0
- package/dist/lifeops/service-mixin-reminders.js.map +1 -0
- package/dist/lifeops/service-mixin-scheduling.d.ts +53 -0
- package/dist/lifeops/service-mixin-scheduling.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-scheduling.js +405 -0
- package/dist/lifeops/service-mixin-scheduling.js.map +1 -0
- package/dist/lifeops/service-mixin-screentime.d.ts +71 -0
- package/dist/lifeops/service-mixin-screentime.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-screentime.js +530 -0
- package/dist/lifeops/service-mixin-screentime.js.map +1 -0
- package/dist/lifeops/service-mixin-signal.d.ts +74 -0
- package/dist/lifeops/service-mixin-signal.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-signal.js +214 -0
- package/dist/lifeops/service-mixin-signal.js.map +1 -0
- package/dist/lifeops/service-mixin-sleep.d.ts +68 -0
- package/dist/lifeops/service-mixin-sleep.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-sleep.js +43 -0
- package/dist/lifeops/service-mixin-sleep.js.map +1 -0
- package/dist/lifeops/service-mixin-status.d.ts +31 -0
- package/dist/lifeops/service-mixin-status.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-status.js +373 -0
- package/dist/lifeops/service-mixin-status.js.map +1 -0
- package/dist/lifeops/service-mixin-subscriptions.d.ts +101 -0
- package/dist/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-subscriptions.js +50 -0
- package/dist/lifeops/service-mixin-subscriptions.js.map +1 -0
- package/dist/lifeops/service-mixin-telegram.d.ts +104 -0
- package/dist/lifeops/service-mixin-telegram.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-telegram.js +280 -0
- package/dist/lifeops/service-mixin-telegram.js.map +1 -0
- package/dist/lifeops/service-mixin-travel.d.ts +66 -0
- package/dist/lifeops/service-mixin-travel.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-travel.js +275 -0
- package/dist/lifeops/service-mixin-travel.js.map +1 -0
- package/dist/lifeops/service-mixin-whatsapp.d.ts +96 -0
- package/dist/lifeops/service-mixin-whatsapp.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-whatsapp.js +186 -0
- package/dist/lifeops/service-mixin-whatsapp.js.map +1 -0
- package/dist/lifeops/service-mixin-workflows.d.ts +15 -0
- package/dist/lifeops/service-mixin-workflows.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-workflows.js +710 -0
- package/dist/lifeops/service-mixin-workflows.js.map +1 -0
- package/dist/lifeops/service-mixin-x-read.d.ts +31 -0
- package/dist/lifeops/service-mixin-x-read.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-x-read.js +267 -0
- package/dist/lifeops/service-mixin-x-read.js.map +1 -0
- package/dist/lifeops/service-mixin-x.d.ts +66 -0
- package/dist/lifeops/service-mixin-x.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-x.js +501 -0
- package/dist/lifeops/service-mixin-x.js.map +1 -0
- package/dist/lifeops/service-normalize-connector.d.ts +19 -0
- package/dist/lifeops/service-normalize-connector.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-connector.js +816 -0
- package/dist/lifeops/service-normalize-connector.js.map +1 -0
- package/dist/lifeops/service-normalize-gmail.d.ts +11 -0
- package/dist/lifeops/service-normalize-gmail.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-gmail.js +85 -0
- package/dist/lifeops/service-normalize-gmail.js.map +1 -0
- package/dist/lifeops/service-normalize-task.d.ts +9 -0
- package/dist/lifeops/service-normalize-task.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-task.js +567 -0
- package/dist/lifeops/service-normalize-task.js.map +1 -0
- package/dist/lifeops/service-normalize.d.ts +9 -0
- package/dist/lifeops/service-normalize.d.ts.map +1 -0
- package/dist/lifeops/service-normalize.js +53 -0
- package/dist/lifeops/service-normalize.js.map +1 -0
- package/dist/lifeops/service-types.d.ts +75 -0
- package/dist/lifeops/service-types.d.ts.map +1 -0
- package/dist/lifeops/service-types.js +5 -0
- package/dist/lifeops/service-types.js.map +1 -0
- package/dist/lifeops/service.d.ts +482 -0
- package/dist/lifeops/service.d.ts.map +1 -0
- package/dist/lifeops/service.js +62 -0
- package/dist/lifeops/service.js.map +1 -0
- package/dist/lifeops/signal-runtime-config.d.ts +13 -0
- package/dist/lifeops/signal-runtime-config.d.ts.map +1 -0
- package/dist/lifeops/signal-runtime-config.js +44 -0
- package/dist/lifeops/signal-runtime-config.js.map +1 -0
- package/dist/lifeops/signals/bus.d.ts +78 -0
- package/dist/lifeops/signals/bus.d.ts.map +1 -0
- package/dist/lifeops/signals/bus.js +117 -0
- package/dist/lifeops/signals/bus.js.map +1 -0
- package/dist/lifeops/sql.d.ts +65 -0
- package/dist/lifeops/sql.d.ts.map +1 -0
- package/dist/lifeops/sql.js +182 -0
- package/dist/lifeops/sql.js.map +1 -0
- package/dist/lifeops/stretch-decider.d.ts +73 -0
- package/dist/lifeops/stretch-decider.d.ts.map +1 -0
- package/dist/lifeops/stretch-decider.js +49 -0
- package/dist/lifeops/stretch-decider.js.map +1 -0
- package/dist/lifeops/telemetry-mapping.d.ts +14 -0
- package/dist/lifeops/telemetry-mapping.d.ts.map +1 -0
- package/dist/lifeops/telemetry-mapping.js +115 -0
- package/dist/lifeops/telemetry-mapping.js.map +1 -0
- package/dist/lifeops/telemetry-retention.d.ts +21 -0
- package/dist/lifeops/telemetry-retention.d.ts.map +1 -0
- package/dist/lifeops/telemetry-retention.js +13 -0
- package/dist/lifeops/telemetry-retention.js.map +1 -0
- package/dist/lifeops/time/timezone.d.ts +4 -0
- package/dist/lifeops/time/timezone.d.ts.map +1 -0
- package/dist/lifeops/time/timezone.js +154 -0
- package/dist/lifeops/time/timezone.js.map +1 -0
- package/dist/lifeops/time-util.d.ts +10 -0
- package/dist/lifeops/time-util.d.ts.map +1 -0
- package/dist/lifeops/time-util.js +14 -0
- package/dist/lifeops/time-util.js.map +1 -0
- package/dist/lifeops/time.d.ts +17 -0
- package/dist/lifeops/time.d.ts.map +1 -0
- package/dist/lifeops/time.js +152 -0
- package/dist/lifeops/time.js.map +1 -0
- package/dist/lifeops/travel-booking.types.d.ts +46 -0
- package/dist/lifeops/travel-booking.types.d.ts.map +1 -0
- package/dist/lifeops/travel-booking.types.js +1 -0
- package/dist/lifeops/travel-booking.types.js.map +1 -0
- package/dist/lifeops/triggers/schedule-once.d.ts +19 -0
- package/dist/lifeops/triggers/schedule-once.d.ts.map +1 -0
- package/dist/lifeops/triggers/schedule-once.js +99 -0
- package/dist/lifeops/triggers/schedule-once.js.map +1 -0
- package/dist/lifeops/validate/coding-task-request.d.ts +18 -0
- package/dist/lifeops/validate/coding-task-request.d.ts.map +1 -0
- package/dist/lifeops/validate/coding-task-request.js +16 -0
- package/dist/lifeops/validate/coding-task-request.js.map +1 -0
- package/dist/lifeops/voice/grounded-reply.d.ts +41 -0
- package/dist/lifeops/voice/grounded-reply.d.ts.map +1 -0
- package/dist/lifeops/voice/grounded-reply.js +24 -0
- package/dist/lifeops/voice/grounded-reply.js.map +1 -0
- package/dist/lifeops/voice-affect.d.ts +79 -0
- package/dist/lifeops/voice-affect.d.ts.map +1 -0
- package/dist/lifeops/voice-affect.js +253 -0
- package/dist/lifeops/voice-affect.js.map +1 -0
- package/dist/lifeops/wave1-types.d.ts +125 -0
- package/dist/lifeops/wave1-types.d.ts.map +1 -0
- package/dist/lifeops/wave1-types.js +1 -0
- package/dist/lifeops/wave1-types.js.map +1 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts +33 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts.map +1 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.js +226 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.js.map +1 -0
- package/dist/lifeops/work-threads/index.d.ts +3 -0
- package/dist/lifeops/work-threads/index.d.ts.map +1 -0
- package/dist/lifeops/work-threads/index.js +7 -0
- package/dist/lifeops/work-threads/index.js.map +1 -0
- package/dist/lifeops/work-threads/store.d.ts +91 -0
- package/dist/lifeops/work-threads/store.d.ts.map +1 -0
- package/dist/lifeops/work-threads/store.js +245 -0
- package/dist/lifeops/work-threads/store.js.map +1 -0
- package/dist/lifeops/work-threads/types.d.ts +58 -0
- package/dist/lifeops/work-threads/types.d.ts.map +1 -0
- package/dist/lifeops/work-threads/types.js +1 -0
- package/dist/lifeops/work-threads/types.js.map +1 -0
- package/dist/platform/host.d.ts +16 -0
- package/dist/platform/host.d.ts.map +1 -0
- package/dist/platform/host.js +22 -0
- package/dist/platform/host.js.map +1 -0
- package/dist/platform/index.d.ts +3 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +3 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/lifeops-github.d.ts +15 -0
- package/dist/platform/lifeops-github.d.ts.map +1 -0
- package/dist/platform/lifeops-github.js +146 -0
- package/dist/platform/lifeops-github.js.map +1 -0
- package/dist/plugin.d.ts +106 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +989 -0
- package/dist/plugin.js.map +1 -0
- package/dist/provider.d.ts +4 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +108 -0
- package/dist/provider.js.map +1 -0
- package/dist/providers/activity-profile.d.ts +3 -0
- package/dist/providers/activity-profile.d.ts.map +1 -0
- package/dist/providers/activity-profile.js +140 -0
- package/dist/providers/activity-profile.js.map +1 -0
- package/dist/providers/cross-channel-context.d.ts +29 -0
- package/dist/providers/cross-channel-context.d.ts.map +1 -0
- package/dist/providers/cross-channel-context.js +206 -0
- package/dist/providers/cross-channel-context.js.map +1 -0
- package/dist/providers/first-run.d.ts +22 -0
- package/dist/providers/first-run.d.ts.map +1 -0
- package/dist/providers/first-run.js +93 -0
- package/dist/providers/first-run.js.map +1 -0
- package/dist/providers/health.d.ts +2 -0
- package/dist/providers/health.d.ts.map +1 -0
- package/dist/providers/health.js +14 -0
- package/dist/providers/health.js.map +1 -0
- package/dist/providers/inbox-triage.d.ts +3 -0
- package/dist/providers/inbox-triage.d.ts.map +1 -0
- package/dist/providers/inbox-triage.js +134 -0
- package/dist/providers/inbox-triage.js.map +1 -0
- package/dist/providers/lifeops.d.ts +3 -0
- package/dist/providers/lifeops.d.ts.map +1 -0
- package/dist/providers/lifeops.js +548 -0
- package/dist/providers/lifeops.js.map +1 -0
- package/dist/providers/pending-prompts.d.ts +38 -0
- package/dist/providers/pending-prompts.d.ts.map +1 -0
- package/dist/providers/pending-prompts.js +81 -0
- package/dist/providers/pending-prompts.js.map +1 -0
- package/dist/providers/recent-task-states.d.ts +52 -0
- package/dist/providers/recent-task-states.d.ts.map +1 -0
- package/dist/providers/recent-task-states.js +166 -0
- package/dist/providers/recent-task-states.js.map +1 -0
- package/dist/providers/room-policy.d.ts +16 -0
- package/dist/providers/room-policy.d.ts.map +1 -0
- package/dist/providers/room-policy.js +71 -0
- package/dist/providers/room-policy.js.map +1 -0
- package/dist/providers/work-threads.d.ts +3 -0
- package/dist/providers/work-threads.d.ts.map +1 -0
- package/dist/providers/work-threads.js +97 -0
- package/dist/providers/work-threads.js.map +1 -0
- package/dist/public.d.ts +3 -0
- package/dist/public.d.ts.map +1 -0
- package/dist/public.js +17 -0
- package/dist/public.js.map +1 -0
- package/dist/routes/cloud-features-routes.d.ts +9 -0
- package/dist/routes/cloud-features-routes.d.ts.map +1 -0
- package/dist/routes/cloud-features-routes.js +164 -0
- package/dist/routes/cloud-features-routes.js.map +1 -0
- package/dist/routes/entities.d.ts +14 -0
- package/dist/routes/entities.d.ts.map +1 -0
- package/dist/routes/entities.js +203 -0
- package/dist/routes/entities.js.map +1 -0
- package/dist/routes/lifeops-routes.d.ts +20 -0
- package/dist/routes/lifeops-routes.d.ts.map +1 -0
- package/dist/routes/lifeops-routes.js +2337 -0
- package/dist/routes/lifeops-routes.js.map +1 -0
- package/dist/routes/plugin.d.ts +9 -0
- package/dist/routes/plugin.d.ts.map +1 -0
- package/dist/routes/plugin.js +568 -0
- package/dist/routes/plugin.js.map +1 -0
- package/dist/routes/relationships.d.ts +13 -0
- package/dist/routes/relationships.d.ts.map +1 -0
- package/dist/routes/relationships.js +195 -0
- package/dist/routes/relationships.js.map +1 -0
- package/dist/routes/scheduled-tasks.d.ts +102 -0
- package/dist/routes/scheduled-tasks.d.ts.map +1 -0
- package/dist/routes/scheduled-tasks.js +322 -0
- package/dist/routes/scheduled-tasks.js.map +1 -0
- package/dist/routes/sleep-routes.d.ts +3 -0
- package/dist/routes/sleep-routes.d.ts.map +1 -0
- package/dist/routes/sleep-routes.js +33 -0
- package/dist/routes/sleep-routes.js.map +1 -0
- package/dist/routes/travel-provider-relay-routes.d.ts +2 -0
- package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
- package/dist/routes/travel-provider-relay-routes.js +7 -0
- package/dist/routes/travel-provider-relay-routes.js.map +1 -0
- package/dist/routes/website-blocker-routes.d.ts +6 -0
- package/dist/routes/website-blocker-routes.d.ts.map +1 -0
- package/dist/routes/website-blocker-routes.js +218 -0
- package/dist/routes/website-blocker-routes.js.map +1 -0
- package/dist/security/action-confirmation.d.ts +12 -0
- package/dist/security/action-confirmation.d.ts.map +1 -0
- package/dist/security/action-confirmation.js +36 -0
- package/dist/security/action-confirmation.js.map +1 -0
- package/dist/service.d.ts +34 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +111 -0
- package/dist/service.js.map +1 -0
- package/dist/travel-time/calendar-create.d.ts +17 -0
- package/dist/travel-time/calendar-create.d.ts.map +1 -0
- package/dist/travel-time/calendar-create.js +28 -0
- package/dist/travel-time/calendar-create.js.map +1 -0
- package/dist/travel-time/service.d.ts +114 -0
- package/dist/travel-time/service.d.ts.map +1 -0
- package/dist/travel-time/service.js +209 -0
- package/dist/travel-time/service.js.map +1 -0
- package/dist/types/app-blocker-settings-card.d.ts +2 -0
- package/dist/types/app-blocker-settings-card.d.ts.map +1 -0
- package/dist/types/app-blocker-settings-card.js +1 -0
- package/dist/types/app-blocker-settings-card.js.map +1 -0
- package/dist/types/briefing.d.ts +59 -0
- package/dist/types/briefing.d.ts.map +1 -0
- package/dist/types/briefing.js +1 -0
- package/dist/types/briefing.js.map +1 -0
- package/dist/types/document-request.d.ts +41 -0
- package/dist/types/document-request.d.ts.map +1 -0
- package/dist/types/document-request.js +1 -0
- package/dist/types/document-request.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/website-blocker-settings-card.d.ts +2 -0
- package/dist/types/website-blocker-settings-card.d.ts.map +1 -0
- package/dist/types/website-blocker-settings-card.js +1 -0
- package/dist/types/website-blocker-settings-card.js.map +1 -0
- package/dist/ui.d.ts +13 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +25 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils/format-duration.d.ts +2 -0
- package/dist/utils/format-duration.d.ts.map +1 -0
- package/dist/utils/format-duration.js +13 -0
- package/dist/utils/format-duration.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/lifeops-url.d.ts +3 -0
- package/dist/utils/lifeops-url.d.ts.map +1 -0
- package/dist/utils/lifeops-url.js +28 -0
- package/dist/utils/lifeops-url.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-activator.d.ts +32 -0
- package/dist/website-blocker/chat-integration/block-activator.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-activator.js +30 -0
- package/dist/website-blocker/chat-integration/block-activator.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts +7 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.js +115 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.d.ts +39 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.js +133 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-service.d.ts +21 -0
- package/dist/website-blocker/chat-integration/block-rule-service.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-service.js +230 -0
- package/dist/website-blocker/chat-integration/block-rule-service.js.map +1 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts +13 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.js +22 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.js.map +1 -0
- package/dist/website-blocker/chat-integration/index.d.ts +5 -0
- package/dist/website-blocker/chat-integration/index.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/index.js +26 -0
- package/dist/website-blocker/chat-integration/index.js.map +1 -0
- package/dist/website-blocker/proactive-block-bridge.d.ts +75 -0
- package/dist/website-blocker/proactive-block-bridge.d.ts.map +1 -0
- package/dist/website-blocker/proactive-block-bridge.js +154 -0
- package/dist/website-blocker/proactive-block-bridge.js.map +1 -0
- package/dist/website-blocker/public.d.ts +12 -0
- package/dist/website-blocker/public.d.ts.map +1 -0
- package/dist/website-blocker/public.js +51 -0
- package/dist/website-blocker/public.js.map +1 -0
- package/package.json +28 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lifeops/checkin/checkin-service.ts"],"sourcesContent":["import { resolveKnowledgeGraphService } from \"@elizaos/agent\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger, ModelType, runWithTrajectoryContext } from \"@elizaos/core\";\nimport {\n type GetLifeOpsCalendarFeedRequest,\n type GetLifeOpsGmailTriageRequest,\n type GetLifeOpsInboxRequest,\n LIFEOPS_OCCURRENCE_STATES,\n type LifeOpsCalendarFeed,\n type LifeOpsGmailTriageFeed,\n type LifeOpsInbox,\n type LifeOpsOccurrence,\n type LifeOpsOccurrenceState,\n type LifeOpsXDm,\n type LifeOpsXFeedItem,\n type LifeOpsXFeedType,\n} from \"@elizaos/shared\";\nimport { computeOverdueFollowups } from \"../../followup/followup-tracker.js\";\nimport {\n computeMissedOccurrenceStreak,\n computeOccurrenceStreaks,\n} from \"../service-helpers-occurrence.js\";\nimport { executeRawSql, parseJsonRecord, sqlQuote, toText } from \"../sql.js\";\nimport { buildUtcDateFromLocalParts, getZonedDateParts } from \"../time.js\";\nimport type {\n CheckinBriefingItem,\n CheckinBriefingSection,\n CheckinKind,\n CheckinReport,\n EscalationLevel,\n HabitSummary,\n MeetingEntry,\n OverdueTodo,\n RecentWin,\n RecordAcknowledgementRequest,\n RunCheckinRequest,\n SleepRecap,\n} from \"./types.js\";\n\n/**\n * Check-in engine (T9f). Assembles morning/night reports from existing LifeOps data\n * and tracks acknowledgement state for tone escalation.\n *\n * CQRS: read methods return typed shapes; write methods return void or an id.\n * Graceful degradation: if an upstream collector source is missing, the\n * collector logs once per process and records the error message in\n * `CheckinReport.collectorErrors.<field>` so callers can distinguish empty\n * data from an unavailable source.\n */\n\nexport const CHECKIN_REPORTS_TABLE = \"app_lifeops.life_checkin_reports\";\n\nconst ACK_WINDOW_MS = 72 * 60 * 60 * 1000;\nconst DEFAULT_SECTION_LIMIT = 8;\nconst INTERNAL_URL = new URL(\"http://127.0.0.1/\");\nconst ACTION_TEXT_RE =\n /\\b(urgent|asap|blocked|deadline|today|tonight|tomorrow|confirm|review|send|reply|respond|need|please|important|agreement|agreed|promise|promised|follow up|circle back)\\b/i;\n\nexport interface CheckinSourceService {\n getInbox?(request?: GetLifeOpsInboxRequest): Promise<LifeOpsInbox>;\n getGmailTriage?(\n requestUrl: URL,\n request?: GetLifeOpsGmailTriageRequest,\n now?: Date,\n ): Promise<LifeOpsGmailTriageFeed>;\n getCalendarFeed?(\n requestUrl: URL,\n request?: GetLifeOpsCalendarFeedRequest,\n now?: Date,\n ): Promise<LifeOpsCalendarFeed>;\n syncXDms?(opts?: { limit?: number }): Promise<{ synced: number }>;\n getXDms?(opts?: {\n conversationId?: string;\n limit?: number;\n }): Promise<LifeOpsXDm[]>;\n syncXFeed?(\n feedType: LifeOpsXFeedType,\n opts?: { limit?: number; query?: string },\n ): Promise<{ synced: number }>;\n getXFeedItems?(\n feedType: LifeOpsXFeedType,\n opts?: { limit?: number },\n ): Promise<LifeOpsXFeedItem[]>;\n}\n\nexport interface CheckinServiceOptions {\n readonly sources?: CheckinSourceService;\n}\n\n// Single-shot logging for graceful-degradation paths.\nconst loggedMissingSources = new Set<string>();\nfunction logMissingOnce(key: string, message: string): void {\n if (loggedMissingSources.has(key)) return;\n loggedMissingSources.add(key);\n logger.info(`[CheckinService] ${message}`);\n}\n\n/**\n * Format a `medianBedtimeLocalHour` (in [12, 36)) as a local HH:MM string.\n * Hours >= 24 wrap into the next day, e.g. 24.5 → \"00:30\". Returns null when\n * the input is null or non-finite — the prompt builder uses this to omit the\n * bedtime line entirely rather than print filler text.\n */\nfunction formatBedtimeHour(hour: number | null): string | null {\n if (hour === null || !Number.isFinite(hour)) {\n return null;\n }\n const wrapped = ((hour % 24) + 24) % 24;\n const hh = Math.floor(wrapped);\n const mm = Math.round((wrapped - hh) * 60);\n // Round-up edge: 23.999... → 24:00 → wrap to 00:00.\n const normHh = mm === 60 ? (hh + 1) % 24 : hh;\n const normMm = mm === 60 ? 0 : mm;\n return `${String(normHh).padStart(2, \"0\")}:${String(normMm).padStart(2, \"0\")}`;\n}\n\nfunction formatDurationMinutes(durationMin: number | null): string | null {\n if (\n durationMin === null ||\n !Number.isFinite(durationMin) ||\n durationMin <= 0\n ) {\n return null;\n }\n const hours = Math.floor(durationMin / 60);\n const minutes = Math.round(durationMin - hours * 60);\n if (hours === 0) return `${minutes}m`;\n if (minutes === 0) return `${hours}h`;\n return `${hours}h${minutes}m`;\n}\n\nfunction formatPromptScalar(value: unknown): string {\n if (value === null || value === undefined) {\n return \"null\";\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n const text =\n value instanceof Date ? value.toISOString() : String(value).trim();\n return text.replace(/\\s+/g, \" \").trim();\n}\n\nfunction formatCheckinReportForPrompt(\n report: Omit<CheckinReport, \"summaryText\">,\n): string {\n return JSON.stringify(report, (_key, value: unknown) => {\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (typeof value === \"string\") {\n return formatPromptScalar(value);\n }\n return value;\n });\n}\n\n/**\n * Build the LLM prompt for a check-in summary. Exported for direct unit\n * testing of prompt content (especially the night-only sleep recap section).\n */\nexport function buildCheckinSummaryPrompt(\n report: Omit<CheckinReport, \"summaryText\">,\n): string {\n const lines: string[] = [\n report.kind === \"morning\"\n ? \"Write the owner's morning personal-assistant intro summary.\"\n : \"Write the owner's night personal-assistant closeout summary.\",\n \"This is generated from LifeOps source data. Do not invent facts.\",\n \"Rank for genuinely interesting, important, reply-needed, or schedule-changing items.\",\n \"Include X/socials (timeline, mentions, DMs), inboxes/messages/Discord, Gmail, GitHub, calendar changes, completed work, contacts, promises, agreements, and follow-ups when present.\",\n \"When a source is unavailable, say that source is unavailable in one compact clause instead of pretending it was empty.\",\n report.kind === \"morning\"\n ? \"Tone: concise start-of-day briefing, with what matters now and first next steps.\"\n : \"Tone: concise evening recap sent before the owner's predicted bedtime, with what happened, loose ends, and tomorrow carry-forward.\",\n \"Use short sections or tight bullets. No markdown table. No emojis.\",\n ];\n\n if (report.kind === \"night\" && report.sleepRecap) {\n const recap = report.sleepRecap;\n const bedtime = formatBedtimeHour(recap.medianBedtimeLocalHour);\n const duration = formatDurationMinutes(recap.medianSleepDurationMin);\n const recapBullets: string[] = [];\n if (bedtime !== null) {\n recapBullets.push(`- typical bedtime: ${bedtime} local`);\n }\n if (duration !== null) {\n recapBullets.push(`- typical sleep duration: ${duration}`);\n }\n recapBullets.push(`- sleep regularity index (SRI): ${recap.sri}/100`);\n recapBullets.push(`- regularity class: ${recap.regularityClass}`);\n lines.push(\n \"\",\n \"Sleep recap (use these facts only — do not invent sleep numbers):\",\n ...recapBullets,\n 'Include a short \"Sleep recap\" section in the summary using these numbers when present. If `regularityClass` is `irregular` or `very_irregular`, suggest one concrete step toward consistency. If it is `insufficient_data`, say so plainly and skip recommendations.',\n );\n }\n\n lines.push(\n \"\",\n \"Report JSON:\",\n formatCheckinReportForPrompt(report),\n \"\",\n \"Summary:\",\n );\n return lines.join(\"\\n\");\n}\n\n/** Exposed for tests that want to reset the process-level once-log. */\nexport function __resetCheckinMissingSourceLog(): void {\n loggedMissingSources.clear();\n}\n\nfunction newReportId(): string {\n const maybeCrypto = (globalThis as { crypto?: { randomUUID?: () => string } })\n .crypto;\n if (maybeCrypto?.randomUUID) return maybeCrypto.randomUUID();\n return `checkin-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction clip(text: string, maxLength = 220): string {\n const trimmed = text.replace(/\\s+/g, \" \").trim();\n if (trimmed.length <= maxLength) {\n return trimmed;\n }\n return `${trimmed.slice(0, maxLength - 3).trimEnd()}...`;\n}\n\nfunction parseMs(value: string | null | undefined): number | null {\n if (!value) {\n return null;\n }\n const ms = Date.parse(value);\n return Number.isFinite(ms) ? ms : null;\n}\n\nfunction toBoolean(value: unknown): boolean {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value !== 0;\n }\n const text = toText(value).toLowerCase();\n return text === \"true\" || text === \"1\" || text === \"yes\";\n}\n\nfunction summarizeCount(\n count: number,\n singular: string,\n plural = `${singular}s`,\n): string {\n return `${count} ${count === 1 ? singular : plural}`;\n}\n\nfunction localDayWindow(\n date: Date,\n timezone: string,\n): { start: Date; end: Date; key: string } {\n const parts = getZonedDateParts(date, timezone);\n const start = buildUtcDateFromLocalParts(timezone, {\n year: parts.year,\n month: parts.month,\n day: parts.day,\n hour: 0,\n minute: 0,\n second: 0,\n });\n const end = buildUtcDateFromLocalParts(timezone, {\n year: parts.year,\n month: parts.month,\n day: parts.day + 1,\n hour: 0,\n minute: 0,\n second: 0,\n });\n return {\n start,\n end,\n key: `${parts.year}-${String(parts.month).padStart(2, \"0\")}-${String(parts.day).padStart(2, \"0\")}`,\n };\n}\n\nfunction rankTextSignal(args: {\n text: string;\n occurredAt: string | null;\n unread?: boolean;\n inbound?: boolean;\n replyNeeded?: boolean;\n important?: boolean;\n}): { score: number; reason: string | null } {\n const reasons: string[] = [];\n let score = 0;\n if (args.inbound) {\n score += 20;\n reasons.push(\"incoming\");\n }\n if (args.unread) {\n score += 15;\n reasons.push(\"unread\");\n }\n if (args.replyNeeded) {\n score += 25;\n reasons.push(\"needs reply\");\n }\n if (args.important) {\n score += 20;\n reasons.push(\"important\");\n }\n if (args.text.includes(\"?\")) {\n score += 10;\n reasons.push(\"question\");\n }\n if (ACTION_TEXT_RE.test(args.text)) {\n score += 20;\n reasons.push(\"action language\");\n }\n const occurredAtMs = parseMs(args.occurredAt);\n if (\n occurredAtMs !== null &&\n Date.now() - occurredAtMs <= 24 * 60 * 60 * 1000\n ) {\n score += 10;\n reasons.push(\"recent\");\n }\n return {\n score,\n reason: reasons.length > 0 ? reasons.join(\", \") : null,\n };\n}\n\nfunction sortBriefingItems(\n entries: Array<CheckinBriefingItem & { score: number }>,\n): CheckinBriefingItem[] {\n return entries\n .sort((left, right) => {\n if (right.score !== left.score) {\n return right.score - left.score;\n }\n return (parseMs(right.occurredAt) ?? 0) - (parseMs(left.occurredAt) ?? 0);\n })\n .slice(0, DEFAULT_SECTION_LIMIT)\n .map(({ score: _score, ...item }) => item);\n}\n\nfunction unavailableSection(\n key: CheckinBriefingSection[\"key\"],\n title: string,\n message: string,\n): CheckinBriefingSection {\n return {\n key,\n title,\n summary: `${title} unavailable.`,\n items: [],\n error: message,\n };\n}\n\ninterface CollectorResult<T> {\n readonly rows: T[];\n readonly error: string | null;\n}\n\ntype HabitCollectorRow = {\n definition_id: unknown;\n definition_title: unknown;\n definition_kind: unknown;\n definition_metadata_json: unknown;\n occurrence_state: unknown;\n occurrence_due_at: unknown;\n occurrence_updated_at: unknown;\n};\n\ntype HabitOccurrence = {\n state: LifeOpsOccurrenceState;\n dueAtMs: number;\n updatedAtMs: number;\n};\n\nconst LIFEOPS_OCCURRENCE_STATE_SET: ReadonlySet<string> = new Set(\n LIFEOPS_OCCURRENCE_STATES,\n);\n\nfunction parseHabitOccurrenceState(\n value: unknown,\n): LifeOpsOccurrenceState | null {\n const state = toText(value);\n return LIFEOPS_OCCURRENCE_STATE_SET.has(state)\n ? (state as LifeOpsOccurrenceState)\n : null;\n}\n\nfunction asFiniteMs(value: string | null | undefined): number | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const parsed = Date.parse(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction resolvePausedUntil(\n metadata: Record<string, unknown>,\n now: Date,\n): string | null {\n const rawPauseUntil = metadata.pauseUntil;\n if (typeof rawPauseUntil !== \"string\") {\n return null;\n }\n const pauseUntil = rawPauseUntil.trim();\n if (!pauseUntil) {\n return null;\n }\n const pauseUntilMs = Date.parse(pauseUntil);\n if (!Number.isFinite(pauseUntilMs) || pauseUntilMs <= now.getTime()) {\n return null;\n }\n return new Date(pauseUntilMs).toISOString();\n}\n\nfunction buildHabitSummary(args: {\n definitionId: string;\n title: string;\n kind: \"habit\" | \"routine\";\n metadata: Record<string, unknown>;\n occurrences: HabitOccurrence[];\n now: Date;\n}): HabitSummary {\n const pauseUntil = resolvePausedUntil(args.metadata, args.now);\n const dueOccurrences = args.occurrences\n .filter((occurrence) => occurrence.dueAtMs <= args.now.getTime())\n .sort((left, right) => {\n if (left.dueAtMs !== right.dueAtMs) {\n return left.dueAtMs - right.dueAtMs;\n }\n return left.updatedAtMs - right.updatedAtMs;\n });\n const streakInput = dueOccurrences.map((occurrence) => ({\n state: occurrence.state as LifeOpsOccurrence[\"state\"],\n }));\n const completedStreak = computeOccurrenceStreaks(streakInput);\n const missedStreak = computeMissedOccurrenceStreak(streakInput);\n return {\n definitionId: args.definitionId,\n title: args.title,\n kind: args.kind,\n currentOccurrenceStreak: pauseUntil ? 0 : completedStreak.current,\n bestOccurrenceStreak: completedStreak.best,\n missedOccurrenceStreak: pauseUntil ? 0 : missedStreak.current,\n pauseUntil,\n isPaused: pauseUntil !== null,\n };\n}\n\nasync function collectHabitSummaries(\n runtime: IAgentRuntime,\n now: Date,\n): Promise<\n CollectorResult<HabitSummary> & { pausedDefinitionIds: Set<string> }\n> {\n const agentId = String(runtime.agentId);\n try {\n const definitionRows = await executeRawSql(\n runtime,\n `SELECT id AS definition_id,\n title AS definition_title,\n kind AS definition_kind,\n metadata_json AS definition_metadata_json\n FROM app_lifeops.life_task_definitions\n WHERE agent_id = ${sqlQuote(agentId)}\n AND kind IN ('habit', 'routine')\n AND status IN ('active', 'paused')\n ORDER BY title ASC`,\n );\n if (definitionRows.length === 0) {\n return { rows: [], error: null, pausedDefinitionIds: new Set() };\n }\n\n const occurrencesRows = await executeRawSql(\n runtime,\n `SELECT definition_id,\n state AS occurrence_state,\n due_at AS occurrence_due_at,\n updated_at AS occurrence_updated_at\n FROM app_lifeops.life_task_occurrences\n WHERE agent_id = ${sqlQuote(agentId)}\n AND definition_id IN (${definitionRows.map((row) => sqlQuote(toText(row.definition_id))).join(\", \")})\n ORDER BY definition_id ASC, due_at ASC, updated_at ASC`,\n );\n\n const occurrencesByDefinitionId = new Map<string, HabitOccurrence[]>();\n for (const row of occurrencesRows as HabitCollectorRow[]) {\n const definitionId = toText(row.definition_id);\n const dueAtMs = asFiniteMs(toText(row.occurrence_due_at));\n const updatedAtMs = asFiniteMs(toText(row.occurrence_updated_at));\n const state = parseHabitOccurrenceState(row.occurrence_state);\n if (\n !definitionId ||\n dueAtMs === null ||\n updatedAtMs === null ||\n state === null\n ) {\n continue;\n }\n const current = occurrencesByDefinitionId.get(definitionId);\n const nextOccurrence: HabitOccurrence = {\n state,\n dueAtMs,\n updatedAtMs,\n };\n if (current) {\n current.push(nextOccurrence);\n } else {\n occurrencesByDefinitionId.set(definitionId, [nextOccurrence]);\n }\n }\n\n const summaries: HabitSummary[] = [];\n const pausedDefinitionIds = new Set<string>();\n for (const row of definitionRows as HabitCollectorRow[]) {\n const definitionId = toText(row.definition_id);\n const title = toText(row.definition_title);\n const kind = toText(row.definition_kind);\n const metadata = parseJsonRecord(row.definition_metadata_json);\n if (!definitionId || !title || (kind !== \"habit\" && kind !== \"routine\")) {\n continue;\n }\n const summary = buildHabitSummary({\n definitionId,\n title,\n kind,\n metadata,\n occurrences: occurrencesByDefinitionId.get(definitionId) ?? [],\n now,\n });\n if (summary.isPaused) {\n pausedDefinitionIds.add(definitionId);\n }\n summaries.push(summary);\n }\n\n return { rows: summaries, error: null, pausedDefinitionIds };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logMissingOnce(\n \"habit-summaries\",\n `habit summaries collector unavailable: ${message}`,\n );\n return { rows: [], error: message, pausedDefinitionIds: new Set() };\n }\n}\n\nasync function collectOverdueTodos(\n runtime: IAgentRuntime,\n now: Date,\n pausedDefinitionIds: ReadonlySet<string>,\n): Promise<CollectorResult<OverdueTodo>> {\n const agentId = String(runtime.agentId);\n const nowIso = now.toISOString();\n try {\n const rows = await executeRawSql(\n runtime,\n `SELECT occ.id AS id,\n occ.definition_id AS definition_id,\n COALESCE(def.title, '') AS title,\n occ.due_at AS due_at\n FROM app_lifeops.life_task_occurrences occ\n LEFT JOIN app_lifeops.life_task_definitions def ON def.id = occ.definition_id\n WHERE occ.agent_id = ${sqlQuote(agentId)}\n AND occ.state IN ('pending', 'active', 'in_progress')\n AND occ.due_at IS NOT NULL\n AND occ.due_at < ${sqlQuote(nowIso)}\n ORDER BY occ.due_at ASC\n LIMIT 50`,\n );\n return {\n rows: rows.flatMap((row) => {\n const definitionId = toText(row.definition_id);\n if (definitionId && pausedDefinitionIds.has(definitionId)) {\n return [];\n }\n return [\n {\n id: toText(row.id),\n title: toText(row.title) || \"(untitled)\",\n dueAt: row.due_at == null ? null : toText(row.due_at),\n },\n ];\n }),\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logMissingOnce(\n \"overdue-todos\",\n `overdue-todos collector unavailable (app_lifeops.life_task_occurrences not ready): ${message}`,\n );\n return { rows: [], error: message };\n }\n}\n\nasync function collectTodaysMeetings(\n runtime: IAgentRuntime,\n now: Date,\n timezone: string,\n): Promise<CollectorResult<MeetingEntry>> {\n const agentId = String(runtime.agentId);\n const day = localDayWindow(now, timezone);\n try {\n const rows = await executeRawSql(\n runtime,\n `SELECT id, title, start_at, end_at\n FROM app_calendar.life_calendar_events\n WHERE agent_id = ${sqlQuote(agentId)}\n AND start_at >= ${sqlQuote(day.start.toISOString())}\n AND start_at < ${sqlQuote(day.end.toISOString())}\n ORDER BY start_at ASC\n LIMIT 50`,\n );\n return {\n rows: rows.map((row) => ({\n id: toText(row.id),\n title: toText(row.title) || \"(untitled)\",\n startAt: toText(row.start_at),\n endAt: toText(row.end_at),\n })),\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logMissingOnce(\n \"todays-meetings\",\n `meetings collector unavailable (app_calendar.life_calendar_events not ready): ${message}`,\n );\n return { rows: [], error: message };\n }\n}\n\nasync function collectCompletedWins(\n runtime: IAgentRuntime,\n kind: CheckinKind,\n now: Date,\n timezone: string,\n): Promise<CollectorResult<RecentWin>> {\n const agentId = String(runtime.agentId);\n const day =\n kind === \"morning\"\n ? localDayWindow(new Date(now.getTime() - 24 * 60 * 60 * 1000), timezone)\n : localDayWindow(now, timezone);\n const start = day.start;\n const end = kind === \"morning\" ? day.end : now;\n try {\n const rows = await executeRawSql(\n runtime,\n `SELECT occ.id AS id,\n COALESCE(def.title, '') AS title,\n occ.updated_at AS completed_at\n FROM app_lifeops.life_task_occurrences occ\n LEFT JOIN app_lifeops.life_task_definitions def ON def.id = occ.definition_id\n WHERE occ.agent_id = ${sqlQuote(agentId)}\n AND occ.state = 'completed'\n AND occ.updated_at >= ${sqlQuote(start.toISOString())}\n AND occ.updated_at <= ${sqlQuote(end.toISOString())}\n ORDER BY occ.updated_at DESC\n LIMIT 50`,\n );\n return {\n rows: rows.map((row) => ({\n id: toText(row.id),\n title: toText(row.title) || \"(untitled)\",\n completedAt: row.completed_at == null ? null : toText(row.completed_at),\n })),\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logMissingOnce(\n \"yesterdays-wins\",\n `completed-wins collector unavailable: ${message}`,\n );\n return { rows: [], error: message };\n }\n}\n\nfunction clampEscalation(count: number): EscalationLevel {\n if (count <= 0) return 0;\n if (count === 1) return 1;\n if (count === 2) return 2;\n return 3;\n}\n\nfunction resolveHabitEscalationLevel(\n summaries: readonly HabitSummary[],\n): EscalationLevel {\n const maxMissedStreak = summaries.reduce(\n (max, summary) => Math.max(max, summary.missedOccurrenceStreak),\n 0,\n );\n return clampEscalation(maxMissedStreak);\n}\n\nasync function collectXDmSection(\n source: CheckinSourceService | undefined,\n): Promise<CheckinBriefingSection> {\n if (!source?.syncXDms || !source.getXDms) {\n return unavailableSection(\n \"x_dms\",\n \"X DMs\",\n \"X DM reader is not registered on this runtime.\",\n );\n }\n try {\n await source.syncXDms({ limit: 30 });\n const dms = await source.getXDms({ limit: 30 });\n const items = sortBriefingItems(\n dms.map((dm) => {\n const ranked = rankTextSignal({\n text: dm.text,\n occurredAt: dm.receivedAt,\n inbound: dm.isInbound,\n unread: dm.readAt === null,\n replyNeeded: dm.isInbound && dm.repliedAt === null,\n });\n return {\n title: dm.senderHandle ? `@${dm.senderHandle}` : dm.senderId,\n detail: clip(dm.text),\n occurredAt: dm.receivedAt,\n href: null,\n reason: ranked.reason,\n score: ranked.score,\n };\n }),\n );\n const actionNeeded = items.filter((item) =>\n item.reason?.includes(\"needs reply\"),\n ).length;\n return {\n key: \"x_dms\",\n title: \"X DMs\",\n summary:\n dms.length === 0\n ? \"No recent X DMs found.\"\n : `${summarizeCount(dms.length, \"recent X DM\")} checked; ${summarizeCount(actionNeeded, \"looks reply-needed\", \"look reply-needed\")}.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\"x_dms\", \"X DMs\", message);\n }\n}\n\nasync function collectXFeedSection(\n source: CheckinSourceService | undefined,\n key: Extract<CheckinBriefingSection[\"key\"], \"x_timeline\" | \"x_mentions\">,\n feedType: Extract<LifeOpsXFeedType, \"home_timeline\" | \"mentions\">,\n title: string,\n): Promise<CheckinBriefingSection> {\n if (!source?.syncXFeed || !source.getXFeedItems) {\n return unavailableSection(\n key,\n title,\n \"X feed reader is not registered on this runtime.\",\n );\n }\n try {\n await source.syncXFeed(feedType, { limit: 30 });\n const feedItems = await source.getXFeedItems(feedType, { limit: 30 });\n const items = sortBriefingItems(\n feedItems.map((feedItem) => {\n const raw = (feedItem.metadata.raw ?? {}) as {\n referenced_tweets?: Array<{ type?: string }>;\n public_metrics?: Record<string, number>;\n };\n const referenceTypes = (raw.referenced_tweets ?? [])\n .map((reference) => reference.type)\n .filter((type): type is string => typeof type === \"string\");\n const isReply = referenceTypes.includes(\"replied_to\");\n const metrics = raw.public_metrics ?? {};\n const engagement =\n metrics.like_count +\n metrics.reply_count * 3 +\n metrics.retweet_count * 2 +\n metrics.quote_count * 2;\n const ranked = rankTextSignal({\n text: feedItem.text,\n occurredAt: feedItem.createdAtSource,\n replyNeeded: isReply,\n important: engagement >= 25,\n });\n return {\n title: feedItem.authorHandle\n ? `@${feedItem.authorHandle}`\n : feedItem.authorId,\n detail: clip(feedItem.text),\n occurredAt: feedItem.createdAtSource,\n href: `https://x.com/i/web/status/${feedItem.externalTweetId}`,\n reason: ranked.reason,\n score: ranked.score + Math.min(30, engagement),\n };\n }),\n );\n return {\n key,\n title,\n summary:\n feedItems.length === 0\n ? `No recent ${title.toLowerCase()} items found.`\n : `${summarizeCount(feedItems.length, \"item\")} scanned from ${title.toLowerCase()}.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(key, title, message);\n }\n}\n\nasync function collectInboxSection(\n source: CheckinSourceService | undefined,\n): Promise<CheckinBriefingSection> {\n if (!source?.getInbox) {\n return unavailableSection(\n \"inbox\",\n \"Inbox\",\n \"Inbox reader is not registered on this runtime.\",\n );\n }\n try {\n const inbox = await source.getInbox({ limit: 50 });\n const counts = Object.entries(inbox.channelCounts)\n .filter(([, count]) => count.total > 0)\n .map(\n ([channel, count]) =>\n `${channel}: ${count.total}${count.unread > 0 ? `/${count.unread} unread` : \"\"}`,\n );\n const items = sortBriefingItems(\n inbox.messages.map((message) => {\n const text = `${message.subject ?? \"\"} ${message.snippet}`;\n const ranked = rankTextSignal({\n text,\n occurredAt: message.receivedAt,\n unread: message.unread,\n inbound: true,\n });\n return {\n title: `${message.channel}: ${message.sender.displayName}`,\n detail: clip(\n message.subject\n ? `${message.subject}: ${message.snippet}`\n : message.snippet,\n ),\n occurredAt: message.receivedAt,\n href: message.deepLink,\n reason: ranked.reason,\n score: ranked.score,\n };\n }),\n );\n return {\n key: \"inbox\",\n title: \"Inbox\",\n summary:\n counts.length === 0\n ? \"No inbox items found across connected channels.\"\n : `Inbox channels scanned: ${counts.join(\", \")}.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\"inbox\", \"Inbox\", message);\n }\n}\n\nasync function collectGmailSection(\n source: CheckinSourceService | undefined,\n now: Date,\n): Promise<CheckinBriefingSection> {\n if (!source?.getGmailTriage) {\n return unavailableSection(\n \"gmail\",\n \"Gmail\",\n \"Gmail triage reader is not registered on this runtime.\",\n );\n }\n try {\n const feed = await source.getGmailTriage(\n INTERNAL_URL,\n { maxResults: 25 },\n now,\n );\n const items = sortBriefingItems(\n feed.messages.map((message) => {\n const text = `${message.subject} ${message.snippet}`;\n const ranked = rankTextSignal({\n text,\n occurredAt: message.receivedAt,\n unread: message.isUnread,\n inbound: true,\n replyNeeded: message.likelyReplyNeeded,\n important: message.isImportant,\n });\n return {\n title: `${message.from || \"Unknown\"}${\n message.subject ? `: ${message.subject}` : \"\"\n }`,\n detail: clip(message.snippet || message.triageReason),\n occurredAt: message.receivedAt,\n href: message.htmlLink,\n reason: ranked.reason ?? (message.triageReason || null),\n score: ranked.score + message.triageScore,\n };\n }),\n );\n return {\n key: \"gmail\",\n title: \"Gmail\",\n summary: `${feed.summary.unreadCount} unread, ${feed.summary.importantNewCount} important, ${feed.summary.likelyReplyNeededCount} likely needing reply.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\"gmail\", \"Gmail\", message);\n }\n}\n\nasync function collectCalendarChangeSection(\n runtime: IAgentRuntime,\n now: Date,\n timezone: string,\n): Promise<CheckinBriefingSection> {\n const agentId = String(runtime.agentId);\n const day = localDayWindow(now, timezone);\n const sinceIso = new Date(now.getTime() - 24 * 60 * 60 * 1000).toISOString();\n try {\n const rows = await executeRawSql(\n runtime,\n `SELECT title, start_at, end_at, status, html_link, updated_at\n FROM app_calendar.life_calendar_events\n WHERE agent_id = ${sqlQuote(agentId)}\n AND side = 'owner'\n AND (\n (start_at >= ${sqlQuote(day.start.toISOString())}\n AND start_at < ${sqlQuote(day.end.toISOString())})\n OR updated_at >= ${sqlQuote(sinceIso)}\n )\n ORDER BY\n CASE WHEN updated_at >= ${sqlQuote(sinceIso)} THEN 0 ELSE 1 END,\n start_at ASC\n LIMIT 40`,\n );\n const todayCount = rows.filter((row) => {\n const startMs = parseMs(toText(row.start_at));\n return (\n startMs !== null &&\n startMs >= day.start.getTime() &&\n startMs < day.end.getTime()\n );\n }).length;\n const changedCount = rows.filter(\n (row) => (parseMs(toText(row.updated_at)) ?? 0) >= Date.parse(sinceIso),\n ).length;\n const items = sortBriefingItems(\n rows.map((row) => {\n const status = toText(row.status);\n const title = toText(row.title) || \"(untitled event)\";\n const updatedAt = toText(row.updated_at) || null;\n const isChanged = (parseMs(updatedAt) ?? 0) >= Date.parse(sinceIso);\n const reason =\n status.toLowerCase() === \"cancelled\"\n ? \"removed/cancelled\"\n : isChanged\n ? \"added or updated\"\n : \"on schedule\";\n return {\n title,\n detail: `${toText(row.start_at)} - ${toText(row.end_at)}${\n status ? ` (${status})` : \"\"\n }`,\n occurredAt: updatedAt ?? toText(row.start_at),\n href: toText(row.html_link) || null,\n reason,\n score: (isChanged ? 30 : 10) + (status === \"cancelled\" ? 30 : 0),\n };\n }),\n );\n return {\n key: \"calendar_changes\",\n title: \"Calendar and schedule changes\",\n summary: `${summarizeCount(todayCount, \"event\")} on today's calendar; ${summarizeCount(changedCount, \"calendar item\")} added or updated in the last 24h.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\n \"calendar_changes\",\n \"Calendar and schedule changes\",\n message,\n );\n }\n}\n\nasync function collectGitHubSection(\n runtime: IAgentRuntime,\n now: Date,\n timezone: string,\n): Promise<CheckinBriefingSection> {\n const agentId = String(runtime.agentId);\n const day = localDayWindow(now, timezone);\n const sinceIso = new Date(now.getTime() - 24 * 60 * 60 * 1000).toISOString();\n try {\n const [mailRows, screenRows] = await Promise.all([\n executeRawSql(\n runtime,\n `SELECT subject, from_display, snippet, received_at, html_link,\n is_unread, is_important, likely_reply_needed, triage_score\n FROM app_lifeops.life_gmail_messages\n WHERE agent_id = ${sqlQuote(agentId)}\n AND side = 'owner'\n AND received_at >= ${sqlQuote(sinceIso)}\n AND LOWER(COALESCE(subject, '') || ' ' || COALESCE(from_display, '') || ' ' || COALESCE(snippet, '')) LIKE '%github%'\n ORDER BY received_at DESC\n LIMIT 12`,\n ),\n executeRawSql(\n runtime,\n `SELECT identifier, display_name, start_at, duration_seconds\n FROM app_lifeops.life_screen_time_sessions\n WHERE agent_id = ${sqlQuote(agentId)}\n AND start_at >= ${sqlQuote(day.start.toISOString())}\n AND start_at < ${sqlQuote(day.end.toISOString())}\n AND LOWER(identifier || ' ' || display_name) LIKE '%github%'\n ORDER BY start_at DESC\n LIMIT 12`,\n ),\n ]);\n const mailItems = mailRows.map((row) => {\n const text = `${toText(row.subject)} ${toText(row.snippet)}`;\n const ranked = rankTextSignal({\n text,\n occurredAt: toText(row.received_at),\n unread: toBoolean(row.is_unread),\n important: toBoolean(row.is_important),\n replyNeeded: toBoolean(row.likely_reply_needed),\n inbound: true,\n });\n return {\n title: `GitHub email: ${toText(row.subject) || \"(no subject)\"}`,\n detail: clip(toText(row.snippet) || toText(row.from_display)),\n occurredAt: toText(row.received_at) || null,\n href: toText(row.html_link) || null,\n reason: ranked.reason,\n score: ranked.score + Number(row.triage_score ?? 0),\n };\n });\n const screenItems = screenRows.map((row) => {\n const minutes = Math.round(Number(row.duration_seconds ?? 0) / 60);\n return {\n title: `GitHub activity: ${\n toText(row.display_name) || toText(row.identifier)\n }`,\n detail: `${minutes}m active`,\n occurredAt: toText(row.start_at) || null,\n href: null,\n reason: \"workspace activity\",\n score: 10 + Math.min(30, minutes),\n };\n });\n const items = sortBriefingItems([...mailItems, ...screenItems]);\n return {\n key: \"github\",\n title: \"GitHub\",\n summary:\n items.length === 0\n ? \"No GitHub-specific email or activity signals found in the last day.\"\n : `${summarizeCount(mailRows.length, \"GitHub email\")} and ${summarizeCount(screenRows.length, \"GitHub activity session\")} found.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\"github\", \"GitHub\", message);\n }\n}\n\nasync function collectContactSection(\n runtime: IAgentRuntime,\n now: Date,\n timezone: string,\n): Promise<CheckinBriefingSection> {\n const agentId = String(runtime.agentId);\n const day = localDayWindow(now, timezone);\n try {\n // Interactions are keyed by the graph entityId; resolve display names from\n // the runtime knowledge graph (there is no flat life_relationships table).\n const rows = await executeRawSql(\n runtime,\n `SELECT relationship_id,\n channel,\n direction,\n summary,\n occurred_at\n FROM app_lifeops.life_relationship_interactions\n WHERE agent_id = ${sqlQuote(agentId)}\n AND occurred_at >= ${sqlQuote(day.start.toISOString())}\n AND occurred_at < ${sqlQuote(day.end.toISOString())}\n ORDER BY occurred_at DESC\n LIMIT 30`,\n );\n const entityStore = resolveKnowledgeGraphService(runtime)?.getEntityStore(\n runtime.agentId,\n );\n const nameByEntityId = new Map<string, string>();\n if (entityStore) {\n const entityIds = new Set(\n rows.map((row) => toText(row.relationship_id)).filter(Boolean),\n );\n for (const entityId of entityIds) {\n const entity = await entityStore.get(entityId);\n if (entity) {\n nameByEntityId.set(entityId, entity.preferredName);\n }\n }\n }\n const nameFor = (row: Record<string, unknown>): string => {\n const entityId = toText(row.relationship_id);\n return nameByEntityId.get(entityId) || entityId;\n };\n const uniqueNames = new Set(rows.map(nameFor).filter(Boolean));\n const items = sortBriefingItems(\n rows.map((row) => ({\n title: `${nameFor(row) || \"Unknown\"} (${\n toText(row.channel) || \"unknown\"\n })`,\n detail: clip(toText(row.summary) || toText(row.direction)),\n occurredAt: toText(row.occurred_at) || null,\n href: null,\n reason: toText(row.direction) || null,\n score: 20,\n })),\n );\n return {\n key: \"contacts\",\n title: \"Contacts and conversations\",\n summary:\n rows.length === 0\n ? \"No relationship interactions logged today.\"\n : `${summarizeCount(uniqueNames.size, \"person\", \"people\")} contacted across ${summarizeCount(rows.length, \"logged interaction\")}.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\n \"contacts\",\n \"Contacts and conversations\",\n message,\n );\n }\n}\n\nasync function collectPromiseSection(\n runtime: IAgentRuntime,\n now: Date,\n): Promise<CheckinBriefingSection> {\n try {\n // Overdue follow-ups are derived from the runtime knowledge graph\n // (contacts past their cadence), the single canonical source shared with\n // the follow-up tracker and the LIST_OVERDUE_FOLLOWUPS action. There is no\n // separate LifeOps follow-up table.\n const digest = await computeOverdueFollowups(runtime, now.getTime());\n const items = sortBriefingItems(\n digest.overdue.map((entry) => ({\n title: `${entry.displayName}: ${entry.daysOverdue}d overdue`,\n detail: clip(\n `Last contacted ${entry.lastContactedAt} (cadence ${entry.thresholdDays}d)`,\n ),\n occurredAt: entry.lastContactedAt,\n href: null,\n reason: \"overdue follow-up\",\n score: 40 + Math.min(20, entry.daysOverdue),\n })),\n );\n return {\n key: \"promises\",\n title: \"Promises, agreements, and follow-ups\",\n summary:\n digest.overdue.length === 0\n ? \"No overdue follow-ups.\"\n : `${summarizeCount(digest.overdue.length, \"overdue follow-up\")} to reconnect.`,\n items,\n error: null,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return unavailableSection(\n \"promises\",\n \"Promises, agreements, and follow-ups\",\n message,\n );\n }\n}\n\nasync function collectBriefingSections(args: {\n runtime: IAgentRuntime;\n source: CheckinSourceService | undefined;\n now: Date;\n timezone: string;\n}): Promise<CheckinBriefingSection[]> {\n return Promise.all([\n collectXDmSection(args.source),\n collectXFeedSection(\n args.source,\n \"x_timeline\",\n \"home_timeline\",\n \"X timeline\",\n ),\n collectXFeedSection(args.source, \"x_mentions\", \"mentions\", \"X mentions\"),\n collectInboxSection(args.source),\n collectGmailSection(args.source, args.now),\n collectGitHubSection(args.runtime, args.now, args.timezone),\n collectCalendarChangeSection(args.runtime, args.now, args.timezone),\n collectContactSection(args.runtime, args.now, args.timezone),\n collectPromiseSection(args.runtime, args.now),\n ]);\n}\n\nexport class CheckinService {\n constructor(\n private readonly runtime: IAgentRuntime,\n private readonly options: CheckinServiceOptions = {},\n ) {}\n\n async runMorningCheckin(\n request: RunCheckinRequest = {},\n ): Promise<CheckinReport> {\n return this.runCheckin(\"morning\", request);\n }\n\n async runNightCheckin(\n request: RunCheckinRequest = {},\n ): Promise<CheckinReport> {\n return this.runCheckin(\"night\", request);\n }\n\n async getEscalationLevel(now: Date = new Date()): Promise<EscalationLevel> {\n const agentId = String(this.runtime.agentId);\n const windowStartMs = now.getTime() - ACK_WINDOW_MS;\n const rows = await executeRawSql(\n this.runtime,\n `SELECT COUNT(*) AS unack_count\n FROM ${CHECKIN_REPORTS_TABLE}\n WHERE agent_id = ${sqlQuote(agentId)}\n AND generated_at_ms >= ${windowStartMs}\n AND acknowledged_at IS NULL`,\n );\n const countRaw = rows[0]?.unack_count;\n const count =\n typeof countRaw === \"number\"\n ? countRaw\n : Number.parseInt(toText(countRaw), 10);\n return clampEscalation(Number.isFinite(count) ? count : 0);\n }\n\n async hasCheckinForLocalDay(args: {\n kind: CheckinKind;\n now: Date;\n timezone: string;\n }): Promise<boolean> {\n const agentId = String(this.runtime.agentId);\n const day = localDayWindow(args.now, args.timezone);\n const rows = await executeRawSql(\n this.runtime,\n `SELECT id\n FROM ${CHECKIN_REPORTS_TABLE}\n WHERE agent_id = ${sqlQuote(agentId)}\n AND kind = ${sqlQuote(args.kind)}\n AND generated_at_ms >= ${day.start.getTime()}\n AND generated_at_ms < ${day.end.getTime()}\n LIMIT 1`,\n );\n return rows.length > 0;\n }\n\n async recordCheckinAcknowledgement(\n request: RecordAcknowledgementRequest,\n ): Promise<void> {\n const reportId = request.reportId.trim();\n if (!reportId) {\n throw new Error(\n \"[CheckinService] recordCheckinAcknowledgement: reportId is required\",\n );\n }\n const agentId = String(this.runtime.agentId);\n await executeRawSql(\n this.runtime,\n `UPDATE ${CHECKIN_REPORTS_TABLE}\n SET acknowledged_at = ${sqlQuote(new Date().toISOString())}\n WHERE id = ${sqlQuote(reportId)}\n AND agent_id = ${sqlQuote(agentId)}`,\n );\n }\n\n private async runCheckin(\n kind: CheckinKind,\n request: RunCheckinRequest,\n ): Promise<CheckinReport> {\n const now = request.now ?? new Date();\n const timezone =\n request.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone;\n const habitCollector = await collectHabitSummaries(this.runtime, now);\n const [overdueTodos, todaysMeetings, completedWins, briefingSections] =\n await Promise.all([\n collectOverdueTodos(\n this.runtime,\n now,\n habitCollector.pausedDefinitionIds,\n ),\n collectTodaysMeetings(this.runtime, now, timezone),\n collectCompletedWins(this.runtime, kind, now, timezone),\n collectBriefingSections({\n runtime: this.runtime,\n source: this.options.sources,\n now,\n timezone,\n }),\n ]);\n const escalationLevel = await this.getEscalationLevel(now);\n const habitEscalationLevel = resolveHabitEscalationLevel(\n habitCollector.rows,\n );\n // sleepRecap is night-only by design (the morning prompt does not surface\n // sleep stats today). Drop it on morning runs even if a caller passes one\n // in to keep the night/morning report shapes diverging on this field.\n const sleepRecap: SleepRecap | null =\n kind === \"night\" ? (request.sleepRecap ?? null) : null;\n const reportWithoutSummary = {\n reportId: newReportId(),\n kind,\n generatedAt: now.toISOString(),\n escalationLevel,\n overdueTodos: overdueTodos.rows,\n todaysMeetings: todaysMeetings.rows,\n yesterdaysWins: completedWins.rows,\n habitSummaries: habitCollector.rows,\n habitEscalationLevel,\n briefingSections,\n sleepRecap,\n collectorErrors: {\n overdueTodos: overdueTodos.error,\n todaysMeetings: todaysMeetings.error,\n yesterdaysWins: completedWins.error,\n },\n };\n const report: CheckinReport = {\n ...reportWithoutSummary,\n summaryText: await this.renderSummary(reportWithoutSummary),\n };\n await this.persistReport(report, now);\n return report;\n }\n\n private fallbackSummary(report: Omit<CheckinReport, \"summaryText\">): string {\n const prefix =\n report.kind === \"morning\" ? \"Morning check-in\" : \"Night check-in\";\n const winsLabel =\n report.kind === \"morning\" ? \"yesterday's wins\" : \"wins today\";\n const sourceLine = report.briefingSections\n .map((section) =>\n section.error\n ? `${section.title}: unavailable`\n : `${section.title}: ${section.summary}`,\n )\n .join(\" \");\n return `${prefix}: ${summarizeCount(report.overdueTodos.length, \"overdue todo\")}, ${summarizeCount(report.todaysMeetings.length, \"meeting\")} today, ${summarizeCount(report.yesterdaysWins.length, winsLabel, winsLabel)}, and ${summarizeCount(report.habitSummaries.length, \"tracked habit\")}. ${sourceLine}`.trim();\n }\n\n private async renderSummary(\n report: Omit<CheckinReport, \"summaryText\">,\n ): Promise<string> {\n const fallback = this.fallbackSummary(report);\n if (typeof this.runtime.useModel !== \"function\") {\n return fallback;\n }\n const prompt = buildCheckinSummaryPrompt(report);\n try {\n const response = await runWithTrajectoryContext(\n { purpose: \"lifeops-checkin-summary\" },\n () =>\n this.runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n }),\n );\n const text = typeof response === \"string\" ? response.trim() : \"\";\n return text.length > 0 ? text : fallback;\n } catch (error) {\n logMissingOnce(\n \"checkin-summary-model\",\n `summary model unavailable: ${error instanceof Error ? error.message : String(error)}`,\n );\n return fallback;\n }\n }\n\n private async persistReport(report: CheckinReport, now: Date): Promise<void> {\n const agentId = String(this.runtime.agentId);\n const payload = JSON.stringify({\n overdueTodos: report.overdueTodos,\n todaysMeetings: report.todaysMeetings,\n yesterdaysWins: report.yesterdaysWins,\n habitSummaries: report.habitSummaries,\n habitEscalationLevel: report.habitEscalationLevel,\n briefingSections: report.briefingSections,\n summaryText: report.summaryText,\n }).replace(/'/g, \"''\");\n await executeRawSql(\n this.runtime,\n `INSERT INTO ${CHECKIN_REPORTS_TABLE}\n (id, agent_id, kind, generated_at, generated_at_ms, escalation_level, payload_json, acknowledged_at)\n VALUES (\n ${sqlQuote(report.reportId)},\n ${sqlQuote(agentId)},\n ${sqlQuote(report.kind)},\n ${sqlQuote(report.generatedAt)},\n ${now.getTime()},\n ${report.escalationLevel},\n '${payload}',\n NULL\n )`,\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
/**
|
|
3
|
+
* Reads the owner's configured morning/night check-in times from the existing
|
|
4
|
+
* owner-profile row. Returns null for a slot if the owner hasn't configured it.
|
|
5
|
+
*
|
|
6
|
+
* `nightCheckinTime` is consumed by `shouldRunNightCheckinFromSleepCycle` as a
|
|
7
|
+
* fallback bedtime anchor for irregular owners. `morningCheckinTime` is read
|
|
8
|
+
* here for parity but the morning dispatcher currently relies exclusively on
|
|
9
|
+
* the inferred `circadianState === "awake"` transition; an explicit timer
|
|
10
|
+
* fallback is intentionally not wired.
|
|
11
|
+
*/
|
|
12
|
+
export interface CheckinSchedule {
|
|
13
|
+
readonly morningCheckinTime: string | null;
|
|
14
|
+
readonly nightCheckinTime: string | null;
|
|
15
|
+
}
|
|
16
|
+
export declare function resolveCheckinSchedule(runtime: IAgentRuntime): Promise<CheckinSchedule>;
|
|
17
|
+
//# sourceMappingURL=schedule-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-resolver.d.ts","sourceRoot":"","sources":["../../../src/lifeops/checkin/schedule-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAkBD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC,CAM1B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { readLifeOpsOwnerProfile } from "../owner-profile.js";
|
|
2
|
+
const HHMM_RE = /^(\d{1,2}):(\d{2})$/;
|
|
3
|
+
function normalizeTime(value) {
|
|
4
|
+
if (typeof value !== "string") return null;
|
|
5
|
+
const trimmed = value.trim();
|
|
6
|
+
if (!trimmed) return null;
|
|
7
|
+
const match = HHMM_RE.exec(trimmed);
|
|
8
|
+
if (!match) return null;
|
|
9
|
+
const [, rawHours = "", rawMinutes = ""] = match;
|
|
10
|
+
const hours = Number.parseInt(rawHours, 10);
|
|
11
|
+
const minutes = Number.parseInt(rawMinutes, 10);
|
|
12
|
+
if (!Number.isFinite(hours) || hours < 0 || hours > 23) return null;
|
|
13
|
+
if (!Number.isFinite(minutes) || minutes < 0 || minutes > 59) return null;
|
|
14
|
+
return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`;
|
|
15
|
+
}
|
|
16
|
+
async function resolveCheckinSchedule(runtime) {
|
|
17
|
+
const profile = await readLifeOpsOwnerProfile(runtime);
|
|
18
|
+
return {
|
|
19
|
+
morningCheckinTime: normalizeTime(profile.morningCheckinTime),
|
|
20
|
+
nightCheckinTime: normalizeTime(profile.nightCheckinTime)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
resolveCheckinSchedule
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=schedule-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lifeops/checkin/schedule-resolver.ts"],"sourcesContent":["import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { LifeOpsOwnerProfile } from \"../owner-profile.js\";\nimport { readLifeOpsOwnerProfile } from \"../owner-profile.js\";\n\n/**\n * Reads the owner's configured morning/night check-in times from the existing\n * owner-profile row. Returns null for a slot if the owner hasn't configured it.\n *\n * `nightCheckinTime` is consumed by `shouldRunNightCheckinFromSleepCycle` as a\n * fallback bedtime anchor for irregular owners. `morningCheckinTime` is read\n * here for parity but the morning dispatcher currently relies exclusively on\n * the inferred `circadianState === \"awake\"` transition; an explicit timer\n * fallback is intentionally not wired.\n */\n\nexport interface CheckinSchedule {\n readonly morningCheckinTime: string | null;\n readonly nightCheckinTime: string | null;\n}\n\nconst HHMM_RE = /^(\\d{1,2}):(\\d{2})$/;\n\nfunction normalizeTime(value: string | undefined | null): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n const match = HHMM_RE.exec(trimmed);\n if (!match) return null;\n const [, rawHours = \"\", rawMinutes = \"\"] = match;\n const hours = Number.parseInt(rawHours, 10);\n const minutes = Number.parseInt(rawMinutes, 10);\n if (!Number.isFinite(hours) || hours < 0 || hours > 23) return null;\n if (!Number.isFinite(minutes) || minutes < 0 || minutes > 59) return null;\n return `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}`;\n}\n\nexport async function resolveCheckinSchedule(\n runtime: IAgentRuntime,\n): Promise<CheckinSchedule> {\n const profile: LifeOpsOwnerProfile = await readLifeOpsOwnerProfile(runtime);\n return {\n morningCheckinTime: normalizeTime(profile.morningCheckinTime),\n nightCheckinTime: normalizeTime(profile.nightCheckinTime),\n };\n}\n"],"mappings":"AAEA,SAAS,+BAA+B;AAkBxC,MAAM,UAAU;AAEhB,SAAS,cAAc,OAAiD;AACtE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,QAAQ,QAAQ,KAAK,OAAO;AAClC,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,CAAC,EAAE,WAAW,IAAI,aAAa,EAAE,IAAI;AAC3C,QAAM,QAAQ,OAAO,SAAS,UAAU,EAAE;AAC1C,QAAM,UAAU,OAAO,SAAS,YAAY,EAAE;AAC9C,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,KAAK,QAAQ,GAAI,QAAO;AAC/D,MAAI,CAAC,OAAO,SAAS,OAAO,KAAK,UAAU,KAAK,UAAU,GAAI,QAAO;AACrE,SAAO,GAAG,OAAO,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,OAAO,EAAE,SAAS,GAAG,GAAG,CAAC;AAC9E;AAEA,eAAsB,uBACpB,SAC0B;AAC1B,QAAM,UAA+B,MAAM,wBAAwB,OAAO;AAC1E,SAAO;AAAA,IACL,oBAAoB,cAAc,QAAQ,kBAAkB;AAAA,IAC5D,kBAAkB,cAAc,QAAQ,gBAAgB;AAAA,EAC1D;AACF;","names":[]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check-in engine types (T9f — Morning/night check-in routine engine, plan §6.23).
|
|
3
|
+
*
|
|
4
|
+
* Scope: types used by CheckinService and its actions. Weekly/quarterly review,
|
|
5
|
+
* pause/resume/snooze, and cron wiring are intentionally deferred to follow-up PRs.
|
|
6
|
+
*/
|
|
7
|
+
export type CheckinKind = "morning" | "night";
|
|
8
|
+
/** 0 = new, 1 = one missed, 2 = two missed, 3 = three+ missed (escalate tone). */
|
|
9
|
+
export type EscalationLevel = 0 | 1 | 2 | 3;
|
|
10
|
+
export interface OverdueTodo {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly title: string;
|
|
13
|
+
readonly dueAt: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface MeetingEntry {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly title: string;
|
|
18
|
+
readonly startAt: string;
|
|
19
|
+
readonly endAt: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RecentWin {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly title: string;
|
|
24
|
+
readonly completedAt: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface HabitSummary {
|
|
27
|
+
readonly definitionId: string;
|
|
28
|
+
readonly title: string;
|
|
29
|
+
readonly kind: "habit" | "routine";
|
|
30
|
+
readonly currentOccurrenceStreak: number;
|
|
31
|
+
readonly bestOccurrenceStreak: number;
|
|
32
|
+
readonly missedOccurrenceStreak: number;
|
|
33
|
+
readonly pauseUntil: string | null;
|
|
34
|
+
readonly isPaused: boolean;
|
|
35
|
+
}
|
|
36
|
+
export type CheckinBriefingSectionKey = "x_dms" | "x_timeline" | "x_mentions" | "inbox" | "gmail" | "github" | "calendar_changes" | "contacts" | "promises";
|
|
37
|
+
export interface CheckinBriefingItem {
|
|
38
|
+
readonly title: string;
|
|
39
|
+
readonly detail: string;
|
|
40
|
+
readonly occurredAt: string | null;
|
|
41
|
+
readonly href: string | null;
|
|
42
|
+
readonly reason: string | null;
|
|
43
|
+
}
|
|
44
|
+
export interface CheckinBriefingSection {
|
|
45
|
+
readonly key: CheckinBriefingSectionKey;
|
|
46
|
+
readonly title: string;
|
|
47
|
+
readonly summary: string;
|
|
48
|
+
readonly items: readonly CheckinBriefingItem[];
|
|
49
|
+
readonly error: string | null;
|
|
50
|
+
}
|
|
51
|
+
export interface CheckinCollectorErrors {
|
|
52
|
+
readonly overdueTodos: string | null;
|
|
53
|
+
readonly todaysMeetings: string | null;
|
|
54
|
+
readonly yesterdaysWins: string | null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Sleep recap surfaced to the night-summary prompt. Sourced from the merged
|
|
58
|
+
* schedule-state record's `baseline` (median bedtime / sleep duration) and
|
|
59
|
+
* `regularity` (sleep regularity index, classification). The dispatcher in
|
|
60
|
+
* `service-mixin-reminders.ts#processSleepCycleCheckins` reads these from
|
|
61
|
+
* `currentSchedule.{baseline,regularity}` and threads them into
|
|
62
|
+
* `runNightCheckin`. Always optional — the morning path does not surface
|
|
63
|
+
* sleep stats today, and the night path falls back gracefully when the
|
|
64
|
+
* baseline has fewer than 5 episodes (`baseline === null`).
|
|
65
|
+
*
|
|
66
|
+
* Canonical home: `@elizaos/plugin-health`. Re-exported here for backward
|
|
67
|
+
* compatibility with `from "./types.js"` importers, and brought into local
|
|
68
|
+
* scope for downstream `SleepRecap | null` usages inside this file.
|
|
69
|
+
*/
|
|
70
|
+
import type { SleepRecap } from "@elizaos/plugin-health";
|
|
71
|
+
export type { SleepRecap };
|
|
72
|
+
export interface CheckinReport {
|
|
73
|
+
readonly reportId: string;
|
|
74
|
+
readonly kind: CheckinKind;
|
|
75
|
+
readonly generatedAt: string;
|
|
76
|
+
readonly escalationLevel: EscalationLevel;
|
|
77
|
+
readonly overdueTodos: readonly OverdueTodo[];
|
|
78
|
+
readonly todaysMeetings: readonly MeetingEntry[];
|
|
79
|
+
readonly yesterdaysWins: readonly RecentWin[];
|
|
80
|
+
readonly habitSummaries: readonly HabitSummary[];
|
|
81
|
+
readonly habitEscalationLevel: EscalationLevel;
|
|
82
|
+
readonly briefingSections: readonly CheckinBriefingSection[];
|
|
83
|
+
readonly summaryText: string;
|
|
84
|
+
readonly collectorErrors: CheckinCollectorErrors;
|
|
85
|
+
/**
|
|
86
|
+
* Night-only. Present when the dispatcher has a current
|
|
87
|
+
* `LifeOpsScheduleMergedStateRecord` to read from; null otherwise. Morning
|
|
88
|
+
* reports leave this null.
|
|
89
|
+
*/
|
|
90
|
+
readonly sleepRecap: SleepRecap | null;
|
|
91
|
+
}
|
|
92
|
+
export interface RunCheckinRequest {
|
|
93
|
+
readonly roomId?: string;
|
|
94
|
+
readonly now?: Date;
|
|
95
|
+
readonly timezone?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Night-only sleep recap to thread into the night-summary prompt. Built by
|
|
98
|
+
* `processSleepCycleCheckins` from the merged schedule-state record. Ignored
|
|
99
|
+
* for morning check-ins.
|
|
100
|
+
*/
|
|
101
|
+
readonly sleepRecap?: SleepRecap | null;
|
|
102
|
+
}
|
|
103
|
+
export interface RecordAcknowledgementRequest {
|
|
104
|
+
readonly reportId: string;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lifeops/checkin/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ConnectorStatus, DispatchResult } from "./contract.js";
|
|
2
|
+
export type LegacyConnectorStatus = {
|
|
3
|
+
connected?: boolean;
|
|
4
|
+
reason?: string | null;
|
|
5
|
+
authError?: string | null;
|
|
6
|
+
degradations?: ReadonlyArray<{
|
|
7
|
+
axis: string;
|
|
8
|
+
code: string;
|
|
9
|
+
message: string;
|
|
10
|
+
retryable: boolean;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Translate any legacy `getXConnectorStatus()` shape into a
|
|
15
|
+
* {@link ConnectorStatus}. Status mapping:
|
|
16
|
+
*
|
|
17
|
+
* - `connected: true` and no degradations → `ok`.
|
|
18
|
+
* - `connected: true` with one or more degradations → `degraded`.
|
|
19
|
+
* - `connected: false` → `disconnected`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function legacyStatusToConnectorStatus(status: LegacyConnectorStatus): ConnectorStatus;
|
|
22
|
+
/**
|
|
23
|
+
* Translate a thrown {@link LifeOpsServiceError} (or generic Error) into the
|
|
24
|
+
* {@link DispatchResult} failure shape.
|
|
25
|
+
*
|
|
26
|
+
* Status code → failure-reason mapping mirrors the dispatch-policy decisions:
|
|
27
|
+
* - 401 / 410 / token-expired → `auth_expired` (userActionable: true).
|
|
28
|
+
* - 403 → `auth_expired` (missing permission still requires user action).
|
|
29
|
+
* - 404 → `unknown_recipient`.
|
|
30
|
+
* - 409 → `disconnected` (plugin not connected).
|
|
31
|
+
* - 429 → `rate_limited` with `retryAfterMinutes: 5` default.
|
|
32
|
+
* - 503 → `disconnected` (service unavailable / runtime delegation gone).
|
|
33
|
+
* - everything else → `transport_error`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function errorToDispatchResult(error: unknown): DispatchResult;
|
|
36
|
+
/**
|
|
37
|
+
* Common payload contract for outbound `send`. Connectors that honour this
|
|
38
|
+
* shape can be invoked uniformly through the registry; connectors with
|
|
39
|
+
* additional fields extend the type rather than redefine it.
|
|
40
|
+
*/
|
|
41
|
+
export interface ConnectorSendPayload {
|
|
42
|
+
/** The recipient identity. Channel-specific format (chat id, phone, email). */
|
|
43
|
+
target: string;
|
|
44
|
+
/** Plain-text body to deliver. */
|
|
45
|
+
message: string;
|
|
46
|
+
/** Optional structured metadata forwarded to the underlying mixin. */
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
}
|
|
49
|
+
export declare function isConnectorSendPayload(value: unknown): value is ConnectorSendPayload;
|
|
50
|
+
export declare function rejectInvalidPayload(): DispatchResult;
|
|
51
|
+
//# sourceMappingURL=_helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../../src/lifeops/connectors/_helpers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,aAAa,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CAiBjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAgEpE;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,oBAAoB,CAI/B;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAQrD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { LifeOpsServiceError } from "../service.js";
|
|
2
|
+
function legacyStatusToConnectorStatus(status) {
|
|
3
|
+
const observedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
4
|
+
if (status.connected !== true) {
|
|
5
|
+
return {
|
|
6
|
+
state: "disconnected",
|
|
7
|
+
message: status.authError ?? status.reason ?? void 0,
|
|
8
|
+
observedAt
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
if (status.degradations && status.degradations.length > 0) {
|
|
12
|
+
return {
|
|
13
|
+
state: "degraded",
|
|
14
|
+
message: status.degradations[0]?.message,
|
|
15
|
+
observedAt
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return { state: "ok", observedAt };
|
|
19
|
+
}
|
|
20
|
+
function errorToDispatchResult(error) {
|
|
21
|
+
if (error instanceof LifeOpsServiceError) {
|
|
22
|
+
const message2 = error.message;
|
|
23
|
+
switch (error.status) {
|
|
24
|
+
case 401:
|
|
25
|
+
case 410:
|
|
26
|
+
return {
|
|
27
|
+
ok: false,
|
|
28
|
+
reason: "auth_expired",
|
|
29
|
+
userActionable: true,
|
|
30
|
+
message: message2
|
|
31
|
+
};
|
|
32
|
+
case 403:
|
|
33
|
+
return {
|
|
34
|
+
ok: false,
|
|
35
|
+
reason: "auth_expired",
|
|
36
|
+
userActionable: true,
|
|
37
|
+
message: message2
|
|
38
|
+
};
|
|
39
|
+
case 404:
|
|
40
|
+
return {
|
|
41
|
+
ok: false,
|
|
42
|
+
reason: "unknown_recipient",
|
|
43
|
+
userActionable: true,
|
|
44
|
+
message: message2
|
|
45
|
+
};
|
|
46
|
+
case 409:
|
|
47
|
+
return {
|
|
48
|
+
ok: false,
|
|
49
|
+
reason: "disconnected",
|
|
50
|
+
userActionable: true,
|
|
51
|
+
message: message2
|
|
52
|
+
};
|
|
53
|
+
case 429:
|
|
54
|
+
return {
|
|
55
|
+
ok: false,
|
|
56
|
+
reason: "rate_limited",
|
|
57
|
+
retryAfterMinutes: 5,
|
|
58
|
+
userActionable: false,
|
|
59
|
+
message: message2
|
|
60
|
+
};
|
|
61
|
+
case 503:
|
|
62
|
+
return {
|
|
63
|
+
ok: false,
|
|
64
|
+
reason: "disconnected",
|
|
65
|
+
userActionable: true,
|
|
66
|
+
message: message2
|
|
67
|
+
};
|
|
68
|
+
default:
|
|
69
|
+
return {
|
|
70
|
+
ok: false,
|
|
71
|
+
reason: "transport_error",
|
|
72
|
+
userActionable: false,
|
|
73
|
+
message: message2
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
78
|
+
return {
|
|
79
|
+
ok: false,
|
|
80
|
+
reason: "transport_error",
|
|
81
|
+
userActionable: false,
|
|
82
|
+
message
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function isConnectorSendPayload(value) {
|
|
86
|
+
if (!value || typeof value !== "object") return false;
|
|
87
|
+
const v = value;
|
|
88
|
+
return typeof v.target === "string" && typeof v.message === "string";
|
|
89
|
+
}
|
|
90
|
+
function rejectInvalidPayload() {
|
|
91
|
+
return {
|
|
92
|
+
ok: false,
|
|
93
|
+
reason: "transport_error",
|
|
94
|
+
userActionable: false,
|
|
95
|
+
message: "ConnectorContribution.send requires { target: string; message: string } payload."
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
errorToDispatchResult,
|
|
100
|
+
isConnectorSendPayload,
|
|
101
|
+
legacyStatusToConnectorStatus,
|
|
102
|
+
rejectInvalidPayload
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=_helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lifeops/connectors/_helpers.ts"],"sourcesContent":["/**\n * Internal helpers for connector wrappers.\n *\n * Provides translation from service-mixin bespoke status shapes into the\n * canonical contract:\n *\n * - {@link ConnectorStatus} — uniform `ok | degraded | disconnected` triple.\n * - {@link DispatchResult} — typed success / failure for `send`.\n */\nimport { LifeOpsServiceError } from \"../service.js\";\nimport type { ConnectorStatus, DispatchResult } from \"./contract.js\";\n\nexport type LegacyConnectorStatus = {\n connected?: boolean;\n reason?: string | null;\n authError?: string | null;\n degradations?: ReadonlyArray<{\n axis: string;\n code: string;\n message: string;\n retryable: boolean;\n }>;\n};\n\n/**\n * Translate any legacy `getXConnectorStatus()` shape into a\n * {@link ConnectorStatus}. Status mapping:\n *\n * - `connected: true` and no degradations → `ok`.\n * - `connected: true` with one or more degradations → `degraded`.\n * - `connected: false` → `disconnected`.\n */\nexport function legacyStatusToConnectorStatus(\n status: LegacyConnectorStatus,\n): ConnectorStatus {\n const observedAt = new Date().toISOString();\n if (status.connected !== true) {\n return {\n state: \"disconnected\",\n message: status.authError ?? status.reason ?? undefined,\n observedAt,\n };\n }\n if (status.degradations && status.degradations.length > 0) {\n return {\n state: \"degraded\",\n message: status.degradations[0]?.message,\n observedAt,\n };\n }\n return { state: \"ok\", observedAt };\n}\n\n/**\n * Translate a thrown {@link LifeOpsServiceError} (or generic Error) into the\n * {@link DispatchResult} failure shape.\n *\n * Status code → failure-reason mapping mirrors the dispatch-policy decisions:\n * - 401 / 410 / token-expired → `auth_expired` (userActionable: true).\n * - 403 → `auth_expired` (missing permission still requires user action).\n * - 404 → `unknown_recipient`.\n * - 409 → `disconnected` (plugin not connected).\n * - 429 → `rate_limited` with `retryAfterMinutes: 5` default.\n * - 503 → `disconnected` (service unavailable / runtime delegation gone).\n * - everything else → `transport_error`.\n */\nexport function errorToDispatchResult(error: unknown): DispatchResult {\n if (error instanceof LifeOpsServiceError) {\n const message = error.message;\n switch (error.status) {\n case 401:\n case 410:\n return {\n ok: false,\n reason: \"auth_expired\",\n userActionable: true,\n message,\n };\n case 403:\n return {\n ok: false,\n reason: \"auth_expired\",\n userActionable: true,\n message,\n };\n case 404:\n return {\n ok: false,\n reason: \"unknown_recipient\",\n userActionable: true,\n message,\n };\n case 409:\n return {\n ok: false,\n reason: \"disconnected\",\n userActionable: true,\n message,\n };\n case 429:\n return {\n ok: false,\n reason: \"rate_limited\",\n retryAfterMinutes: 5,\n userActionable: false,\n message,\n };\n case 503:\n return {\n ok: false,\n reason: \"disconnected\",\n userActionable: true,\n message,\n };\n default:\n return {\n ok: false,\n reason: \"transport_error\",\n userActionable: false,\n message,\n };\n }\n }\n const message = error instanceof Error ? error.message : String(error);\n return {\n ok: false,\n reason: \"transport_error\",\n userActionable: false,\n message,\n };\n}\n\n/**\n * Common payload contract for outbound `send`. Connectors that honour this\n * shape can be invoked uniformly through the registry; connectors with\n * additional fields extend the type rather than redefine it.\n */\nexport interface ConnectorSendPayload {\n /** The recipient identity. Channel-specific format (chat id, phone, email). */\n target: string;\n /** Plain-text body to deliver. */\n message: string;\n /** Optional structured metadata forwarded to the underlying mixin. */\n metadata?: Record<string, unknown>;\n}\n\nexport function isConnectorSendPayload(\n value: unknown,\n): value is ConnectorSendPayload {\n if (!value || typeof value !== \"object\") return false;\n const v = value as Record<string, unknown>;\n return typeof v.target === \"string\" && typeof v.message === \"string\";\n}\n\nexport function rejectInvalidPayload(): DispatchResult {\n return {\n ok: false,\n reason: \"transport_error\",\n userActionable: false,\n message:\n \"ConnectorContribution.send requires { target: string; message: string } payload.\",\n };\n}\n"],"mappings":"AASA,SAAS,2BAA2B;AAuB7B,SAAS,8BACd,QACiB;AACjB,QAAM,cAAa,oBAAI,KAAK,GAAE,YAAY;AAC1C,MAAI,OAAO,cAAc,MAAM;AAC7B,WAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS,OAAO,aAAa,OAAO,UAAU;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,gBAAgB,OAAO,aAAa,SAAS,GAAG;AACzD,WAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS,OAAO,aAAa,CAAC,GAAG;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,OAAO,MAAM,WAAW;AACnC;AAeO,SAAS,sBAAsB,OAAgC;AACpE,MAAI,iBAAiB,qBAAqB;AACxC,UAAMA,WAAU,MAAM;AACtB,YAAQ,MAAM,QAAQ;AAAA,MACpB,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,MACF;AACE,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,SAAAA;AAAA,QACF;AAAA,IACJ;AAAA,EACF;AACA,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB;AAAA,EACF;AACF;AAgBO,SAAS,uBACd,OAC+B;AAC/B,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,IAAI;AACV,SAAO,OAAO,EAAE,WAAW,YAAY,OAAO,EAAE,YAAY;AAC9D;AAEO,SAAS,uBAAuC;AACrD,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,SACE;AAAA,EACJ;AACF;","names":["message"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendly connector contribution.
|
|
3
|
+
*
|
|
4
|
+
* Calendly is a scheduling-link provider — there is no outbound `send`. The
|
|
5
|
+
* `read` verb lists scheduled events. The full Calendly API client is owned
|
|
6
|
+
* by `@elizaos/plugin-calendly`.
|
|
7
|
+
*/
|
|
8
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
9
|
+
import type { ConnectorContribution } from "./contract.js";
|
|
10
|
+
export declare function createCalendlyConnectorContribution(_runtime: IAgentRuntime): ConnectorContribution;
|
|
11
|
+
//# sourceMappingURL=calendly.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendly.d.ts","sourceRoot":"","sources":["../../../src/lifeops/connectors/calendly.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,eAAe,CAAC;AAEvB,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,aAAa,GACtB,qBAAqB,CA0DvB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
listCalendlyScheduledEvents,
|
|
3
|
+
readCalendlyCredentialsFromEnv
|
|
4
|
+
} from "@elizaos/plugin-calendly";
|
|
5
|
+
function createCalendlyConnectorContribution(_runtime) {
|
|
6
|
+
return {
|
|
7
|
+
kind: "calendly",
|
|
8
|
+
capabilities: [
|
|
9
|
+
"calendly.events.read",
|
|
10
|
+
"calendly.event_types.read",
|
|
11
|
+
"calendly.availability.read",
|
|
12
|
+
"calendly.single_use_link.create"
|
|
13
|
+
],
|
|
14
|
+
modes: ["cloud"],
|
|
15
|
+
describe: { label: "Calendly" },
|
|
16
|
+
async start() {
|
|
17
|
+
},
|
|
18
|
+
async disconnect() {
|
|
19
|
+
},
|
|
20
|
+
async verify() {
|
|
21
|
+
return readCalendlyCredentialsFromEnv() != null;
|
|
22
|
+
},
|
|
23
|
+
async status() {
|
|
24
|
+
const credentials = readCalendlyCredentialsFromEnv();
|
|
25
|
+
const observedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
26
|
+
if (!credentials) {
|
|
27
|
+
return {
|
|
28
|
+
state: "disconnected",
|
|
29
|
+
message: "Calendly is not configured. Connect Calendly via @elizaos/plugin-calendly to expose scheduled-event reads.",
|
|
30
|
+
observedAt
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return { state: "ok", observedAt };
|
|
34
|
+
},
|
|
35
|
+
// Calendly has no outbound `send`. The DispatchResult below documents
|
|
36
|
+
// the explicit refusal so the runner's dispatch policy can surface it
|
|
37
|
+
// cleanly rather than silently no-op'ing.
|
|
38
|
+
async send() {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
reason: "transport_error",
|
|
42
|
+
userActionable: false,
|
|
43
|
+
message: "Calendly does not support outbound send. Use createCalendlySingleUseLink to share a scheduling link."
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
async read(query) {
|
|
47
|
+
const credentials = readCalendlyCredentialsFromEnv();
|
|
48
|
+
if (!credentials) return [];
|
|
49
|
+
const params = query ?? {};
|
|
50
|
+
return listCalendlyScheduledEvents(credentials, {
|
|
51
|
+
minStartTime: params.minStartTime,
|
|
52
|
+
limit: params.limit ?? 50,
|
|
53
|
+
status: params.status ?? "active"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
createCalendlyConnectorContribution
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=calendly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lifeops/connectors/calendly.ts"],"sourcesContent":["/**\n * Calendly connector contribution.\n *\n * Calendly is a scheduling-link provider — there is no outbound `send`. The\n * `read` verb lists scheduled events. The full Calendly API client is owned\n * by `@elizaos/plugin-calendly`.\n */\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n listCalendlyScheduledEvents,\n readCalendlyCredentialsFromEnv,\n} from \"@elizaos/plugin-calendly\";\nimport type {\n ConnectorContribution,\n ConnectorStatus,\n DispatchResult,\n} from \"./contract.js\";\n\nexport function createCalendlyConnectorContribution(\n _runtime: IAgentRuntime,\n): ConnectorContribution {\n return {\n kind: \"calendly\",\n capabilities: [\n \"calendly.events.read\",\n \"calendly.event_types.read\",\n \"calendly.availability.read\",\n \"calendly.single_use_link.create\",\n ],\n modes: [\"cloud\"],\n describe: { label: \"Calendly\" },\n async start() {},\n async disconnect() {\n // Calendly OAuth lifecycle is owned by @elizaos/plugin-calendly.\n },\n async verify(): Promise<boolean> {\n return readCalendlyCredentialsFromEnv() != null;\n },\n async status(): Promise<ConnectorStatus> {\n const credentials = readCalendlyCredentialsFromEnv();\n const observedAt = new Date().toISOString();\n if (!credentials) {\n return {\n state: \"disconnected\",\n message:\n \"Calendly is not configured. Connect Calendly via @elizaos/plugin-calendly to expose scheduled-event reads.\",\n observedAt,\n };\n }\n return { state: \"ok\", observedAt };\n },\n // Calendly has no outbound `send`. The DispatchResult below documents\n // the explicit refusal so the runner's dispatch policy can surface it\n // cleanly rather than silently no-op'ing.\n async send(): Promise<DispatchResult> {\n return {\n ok: false,\n reason: \"transport_error\",\n userActionable: false,\n message:\n \"Calendly does not support outbound send. Use createCalendlySingleUseLink to share a scheduling link.\",\n };\n },\n async read(query: unknown) {\n const credentials = readCalendlyCredentialsFromEnv();\n if (!credentials) return [];\n const params = (query ?? {}) as {\n minStartTime?: string;\n limit?: number;\n status?: \"active\" | \"canceled\";\n };\n return listCalendlyScheduledEvents(credentials, {\n minStartTime: params.minStartTime,\n limit: params.limit ?? 50,\n status: params.status ?? \"active\",\n });\n },\n };\n}\n"],"mappings":"AAQA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAOA,SAAS,oCACd,UACuB;AACvB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,CAAC,OAAO;AAAA,IACf,UAAU,EAAE,OAAO,WAAW;AAAA,IAC9B,MAAM,QAAQ;AAAA,IAAC;AAAA,IACf,MAAM,aAAa;AAAA,IAEnB;AAAA,IACA,MAAM,SAA2B;AAC/B,aAAO,+BAA+B,KAAK;AAAA,IAC7C;AAAA,IACA,MAAM,SAAmC;AACvC,YAAM,cAAc,+BAA+B;AACnD,YAAM,cAAa,oBAAI,KAAK,GAAE,YAAY;AAC1C,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,UACL,OAAO;AAAA,UACP,SACE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,EAAE,OAAO,MAAM,WAAW;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA,IAIA,MAAM,OAAgC;AACpC,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,MAAM,KAAK,OAAgB;AACzB,YAAM,cAAc,+BAA+B;AACnD,UAAI,CAAC,YAAa,QAAO,CAAC;AAC1B,YAAM,SAAU,SAAS,CAAC;AAK1B,aAAO,4BAA4B,aAAa;AAAA,QAC9C,cAAc,OAAO;AAAA,QACrB,OAAO,OAAO,SAAS;AAAA,QACvB,QAAQ,OAAO,UAAU;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|